删除行尾逗号

删除行尾逗号

如何在 bash 中删除一组尾随逗号:

a,b,c,d,,,,
1,2,3,,,,

期望的输出:

a,b,c,d
1,2,3

尝试这样做:

 grep "5628" test.csv | sed 's/,*$//g'

但它不起作用。该文件最初来自 Windows 计算机。

答案1

重新输入您提供的命令:

grep "5628" test.csv | sed 's/,*$//g'

这将输出与“5628”匹配的行,并删除所有尾随逗号。它不会更新该文件test.csv

但是,您指出该文件来自 Windows 计算机,因此行结尾是 CR/NL 而不仅仅是 NL。结果是该行末尾有一个隐藏的 CR,您需要一个命令行:

grep "5628" test.csv | sed 's/,*\r*$//'

实际上,您可以将其简化为一个命令:

sed -n '/5628/s/,*\r*$//p' test.csv

答案2

sed -n '/5628/ s/,*\r*$//p' test.csv

(不是只要求删除尾随彗差的OP)这避免了管道过程,sed直接采用过滤器和转换

相关内容