我想从 txt 文件中除最后一行之外的每一行中删除一个逗号,我已经使用过grep -Po '.*(?=,$)
,sed -e 's/.$//'
但这将删除最后一行,因为它不包含逗号(这是我的理解)。一个例子:
1,
2,
3
using the commands above , the result will be:
1
2
并不是 :
1
2
3
我会使用以下内容:
sed 's/,$//'
它假定没有尾随空格并从行尾删除一个逗号。如果没有逗号,则不会修改该行。
如果可能有您想要删除的尾随空格,以下内容应该适用于 GNU sed :
sed -r 's/,\s*$//'
如果您需要可移植性,以下应该适用于任何符合 POSIX 的系统:
sed 's/,[[:space:]]*$//'
您的grep
命令不起作用,因为它明确匹配数据后跟逗号和行尾,因此不匹配没有逗号的行。
您可以通过匹配数据后跟逗号和行尾或直接匹配行尾来解决这个问题:
grep -Po '.*(?=,?$)
当可以实现更简单的实现时,我倾向于不喜欢使用环视,因此我会避免使用此解决方案,但这可能只是我自己。
您的sed
命令由于另一个原因不起作用:它删除了一行的最后一个字符,无论这个字符是什么。因此,在您的示例中,在第三行中,字符为3
,删除后该行为空。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句