sed -e 's/word1/word2/' -l 3 output > output2
我正在测试此命令。我期望每行有 3 个字符。但是,它不起作用。output2
与 有相同的换行符output
。我误解了换行吗?
答案1
简而言之...是的,您稍微误解了换行;)
-l N, --line-length=N
specify the desired line-wrap length for the `l' command
因此,它只适用于以下l
命令:
l List out the current line in a ``visually unambiguous'' form.
l width
List out the current line in a ``visually unambiguous'' form,
breaking it at width characters. This is a GNU extension.
如果您希望每行输出三个字符,可以使用以下命令:
sed -nl 4 's/word1/word2/;l' output > output2
或者在 GNU 中这样sed
:
sed -n 's/word1/word2/;l 4' output > output2
请注意,如果实际上没有新行(用字符表示行尾),则会附加尾部反斜杠(以转义换行符$
)。我们需要使用-n
标志,因为该l
命令用于查看而不是编辑,就像命令一样,并且该行在以请求的形式输出=
后将正常显示,除非被抑制。l
-n
只需每三个字符后拆分一次文件,您就可以获得更像您真正想要的结果:
sed 's/word1/word2/; s/.../&\n/g' output > output2
或者在 10 个字符后进行拆分:
sed -r 's/word1/word2/; s/.{10}/&\n/g' output > output2