sed -l 换行选项不起作用

sed -l 换行选项不起作用
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

相关内容