Sed

刪除行中的尾隨逗號

  • January 20, 2022

如何在 bash 中刪除一組尾隨逗號:

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

期望的輸出:

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

嘗試這樣做:

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

但它不起作用。該文件最初來自 Windows 機器。

重新您提供的命令:

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

引用自:https://unix.stackexchange.com/questions/219938