问题描述
我有一个文件,我想在其每一行的末尾附加一个特定的文本 \0A
。
我用过这个命令,
sed -i s/$/\0A/ file.txt
但这不适用于反斜杠 \0A
。
解决方法
在其默认操作中,sed
循环地将输入中的一行(减去终止
OP 想要使用 sed
在行尾附加字符 \0A
。这是
sed G file
G
命令将换行符后跟保留空间的内容附加到模式空间。由于保持空间总是空的,它只是在模式空间中附加一个换行符。 sed
的默认操作是打印该行。所以这只是双倍空格一个文件。
您的命令应该通过简单地将 s/$/\0A/
括在单引号 ('
) 中和 转义反斜杠(使用另一个反斜杠)来修复:
sed -i 's/$/\\0A/' file.txt
请注意,周围的 '
保护该字符串不被外壳处理,但是 bashslash 仍然需要转义以保护它来自 SED 本身。
显然,如果您转义得足够多,仍然可以避免使用单引号:
sed -i s/$/\\\\0A/ file.txt
在这种情况下,没有单引号来保护字符串,因此我们需要在 shell 中写入 \\
以获取带有 \
的 SED,但我们需要其中两个 \\
,即 \\\\
,因此 SED 被输入 \\
,这是一个转义的 \
。
显然要采取行动,我永远不会建议第二种选择。