sed 正在将字符添加到单词的开头与结尾

sed is adding character to start of word vs end

所以我想添加一个“!”从我的 placesCap 文件到我的 placesCapEx 文件中每个单词的末尾

这是它的样子: Yugoslavian Zambia Zambian Zomba

这就是我想要的样子: Yugoslavian! Zambia! Zambian! Zomba!

我已经试过了 sed 's/$/\!/' Wordlists/placesCap > Wordlists/placesCapEx 只是 sed 's/$/!/' Wordlists/placesCap > Wordlists/placesCapEx

当我 运行 然后 cat Wordlists/placesCapEx 它输出时会发生什么 !ugoslavian !ambia !ambian !omba

我做了一些研究,有人说它是 Unix 的东西,但他们从未详细说明

您的更简单的 sed 命令应该适用于行尾是单个换行符的文本文件。您可能在这里有 "dos" 格式文件(回车 return / 换行)。

考虑:

$ cat zippy
Zippy
$ od -c zippy
0000000   Z   i   p   p   y  \r  \n
0000007
$ sed 's/$/!/' zippy
!ippy
$ sed 's/$/!/' zippy | od -c
0000000   Z   i   p   p   y  \r   !  \n
0000010

您正在终端上看到 \r 的效果:将光标移动到行首,打印“!”,换行符转到下一行。

要处理 \r\n 对作为行尾字符的存在,您可以尝试:

$ sed 's/\r*$/!/' zippy
Zippy!

...假设您的 sed 像我的 (GNU sed 4.2.2) 一样尊重 \r。