如何在所有行的末尾附加一个字符串?

rki*_*ifo 5 linux shell sed parsing

我试图在文本文件中所有行的末尾添加一个字符串,但我在某处出错了。

例子:

我在一个文本文件中有这个:

begin--fr.a2dfp.net
begin--m.fr.a2dfp.net
begin--mfr.a2dfp.net
begin--ad.a8.net
begin--asy.a8ww.net
begin--abcstats.com
...
Run Code Online (Sandbox Code Playgroud)

我跑:

sed -i "s|\x0D$|--end|" file.txt
Run Code Online (Sandbox Code Playgroud)

我得到:

begin--fr.a2dfp.net--end
begin--m.fr.a2dfp.net--end
begin--mfr.a2dfp.net--end
begin--ad.a8.net
begin--asy.a8ww.net--end
begin--abcstats.com
...
Run Code Online (Sandbox Code Playgroud)

该字符串仅在某些行中添加,而在其他行中不添加。

知道为什么吗?

l0b*_*0b0 10

\x0D是回车,它可能在您的文本编辑器中可见,也可能不可见。因此,如果您在 Windows 和 Unix/Linux 系统中都编辑过该文件,则可能会混合使用换行符。如果你想可靠地删除回车,你应该使用dos2unix. 如果您真的想在行尾添加文本,只需使用sed -i "s|$|--end|" file.txt.