【发布时间】:2021-08-20 17:03:21
【问题描述】:
我目前有一个文件,其行如下:
ABCD123RTY,steve_tyler@gmail.com,10.20.30.142,2021-08-20T14:49:51.035Z
ABCD123QWE,thisguy@hotmail.com,10.20.30.245,2021-08-20T14:10:22.254Z
ABCD123DFG,calvin_hobbes2@netnet,10.20.30.l6,2021-08-20T15:30:34.480Z
我的目标是删除从“@”到下一个逗号的所有内容,使其看起来如下所示:
ABCD123RTY,steve_tyler,10.20.30.142,2021-08-20T14:49:51.035Z
ABCD123QWE,thisguy,10.20.30.245,2021-08-20T14:10:22.254Z
ABCD123DFG,calvin_hobbes2,10.20.30.l6,2021-08-20T15:30:34.480Z
我没有使用 sed 和 RegEx 表达式的经验。在测试网站上玩耍时,我想出了下面的 RegEx 字符串,其中捕获组 1 与我要删除的内容完全匹配: regex101.com Test
我将如何针对给定的输入文件将其放入“sed”命令中,并将结果写入新的输出文件。我最近尝试过以下方法:
sed 's/(@.+?),//' input.csv > input_Corrected.csv
正如另一个注释,我在 bash 脚本中执行此操作,其中我有一个 API 调用生成“input.csv”文件,然后想要运行这个 sed 命令来清理数据格式以匹配我的需要。
【问题讨论】:
-
由于答案没有提到它,我将它作为评论添加在这里:非贪婪匹配(
.+?)需要Perl兼容的正则表达式(PCRE),但sed只支持基本/扩展正则表达式 (BRE/ERE)。