3

我有文件,其中大多数(不是全部)行以分号结尾。我想只在那些不以分号结尾的行的末尾添加分号。谢谢

4

2 回答 2

7

从技术上讲,这将起作用:

sed '/;$/!s/$/;/' input

但是您可能关心尾随空格,所以:

sed '/; *$/!s/$/;/' input

如果您的 sed 支持\s

 sed '/;\s*$/!s/$/;/' input

或者你可以使用:

sed '/;[[:space:]]*$/!s/$/;/' input
于 2012-08-30T17:48:27.490 回答
4

使用 sed:

sed -i '/[^;] *$/s/$/;/' input_file

意思是:

-i          overwrite the original file with new contents
/[^;] *$/   find lines that do not contain a `;` at the end (after 
            ignoring trailing spaces)
s/$/;/      add a semicolon at the end
于 2012-08-30T17:49:03.937 回答