我有一个文本文件(大约 300'000 行),其中有一个独特的列,其中显示 2 到 6 个字段,以逗号分隔。
A,BB,CC
EF,GHI,DKLM,OP
Q,RS,TUV
W,XY
我想要实现的目标:
A,B,C
EF,HI,KLM,P
Q,S,UV
W,Y
换句话说,我想删除每行中每个逗号后面的第一个字符。
预先感谢您的时间和帮助。此致,
洛朗
答案1
$ cat file
A,BB,CC
EF,GHI,DKLM,OP
Q,RS,TUV
W,XY
$ sed 's/,./,/g' file
A,B,C
EF,HI,KLM,P
Q,S,UV
W,Y
正则表达式,.
匹配一个文字逗号,后跟任何其他字符。该sed
表达式s/,./,/g
仅用一个逗号替换每个逗号和后面的字符,从而有效地删除其他字符。对每行上的每个非重叠匹配项进行替换。
将输出重定向到新文件,或以适当的方式使用sed
with (请参阅-i
如何使用 sed -i (就地编辑)实现可移植性?)。