如何在 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直接采用过滤器和转换