使用 sed 处理包含引号的文件时出现问题

使用 sed 处理包含引号的文件时出现问题

使用

sed's/$/x/'

并输入字符串

foo”酒吧

标准输入给出了预期的结果

foo"barx

但是,将相同的字符串放入文件并运行

sed 's/$/x/' 文件名

给出结果

xoo”酒吧

使用 sed append 命令得到相同的结果。在包含引号的文件中,在行尾附加字符时,bash/sed 命令应该是什么才能获得所需的结果?

答案1

我得到的结果和你不一样。不过我首先想到的是行尾。传统上 \n 表示换行(向下),而 \r 表示回车(返回到开头),并且两个字符连在一起表示向下然后返回。Unix 传统上只使用 \n,而 Microsoft 使用 \r\n。

我正在猜测 sed 会如何处理这个问题,但也许你的文件以 \r\n 作为行尾,但 sed 作为 Linux 工具匹配 \n。因此,首先回车符返回到行首,然后 sed 匹配下一个字符 \n,并放置一个 x(但现在光标位于行首,因此它会覆盖第一个字符)。

如果您还没有这样做,请尝试使用 Linux 编辑器创建该文件。

相关内容