在每行末尾附加特定字符

Append specific caracter at the end of each line

我有一个文件,我想将特定文本 [=11=]A 附加到其每一行的末尾。

我使用了这个命令,

sed -i s/$/[=10=]A/ file.txt

但这不适用于反斜杠 [=11=]A

您的命令应该通过简单地将 s/$/[=12=]A/ 括在单引号 (') and 中来修复反斜杠(带有另一个反斜杠):

sed -i 's/$/\0A/' file.txt

请注意周围的 ' 保护该字符串不被 shell 处理 ,但是bashslash 仍然需要转义以保护它 不受 SED 本身的影响。

显然,如果转义足够多,仍然可以避免使用单引号:

sed -i s/$/\\0A/ file.txt

在这种情况下,没有单引号来保护字符串,因此我们需要在 shell 中写入 \ 以使用 \ 获取 SED,但我们需要两个那些 \,即 \\,因此 SED 由 \ 提供,这是一个转义的 \.

显然移动,我永远不会建议第二种选择。

在其默认操作中,sed 循环将输入中的一行(不包括终止 字符)附加到 sed 的模式 space 中。

OP 想要使用 sed 在行尾附加字符 [=13=]A。这是 字符的十六进制表示(参见 http://www.asciitable.com/)。因此,从这个角度来看,OP 尝试将 space 个文件加倍。这可以使用以下方法轻松完成:

sed G file

G 命令,在模式 space 后附加一个换行符,后跟保留 space 的内容。由于 hold space 始终为空,因此它只是将换行符附加到模式 space。 sed 的默认操作是打印该行。所以这只是双space一个文件。