在文本文件中每行的开头添加空格 5 次

Edw*_*lds 25 shell-script text-processing

我正在寻找一个命令行或 bash 脚本,它会在文件中每一行的开头之前添加 5 次空格。

例如:

abc
Run Code Online (Sandbox Code Playgroud)

添加空格 5 次后

      abc
Run Code Online (Sandbox Code Playgroud)

Eri*_*ouf 37

使用 GNU sed:

sed -i -e 's/^/     /' <file>
Run Code Online (Sandbox Code Playgroud)

将用 5 个空格替换每行的开头。该-i就地修改文件,-e给出了一些代码sed来执行。 s告诉sed做一个替换,^匹配行首,那么后两个/字符之间的部分将替换开头匹配的部分,即本例中的行首。


Jos*_*der 10

您可以使用 sed

sed 's_^_     _' tmpin > tmpout
Run Code Online (Sandbox Code Playgroud)

或者 awk

awk '{print "     " $0}' tmpin > tmpout
Run Code Online (Sandbox Code Playgroud)

或粘贴(谢谢cuonglm

:| paste -d' ' - - - - - file
Run Code Online (Sandbox Code Playgroud)

小心。这些可能会让人上瘾。您可以解决许多简单的问题,但是您需要升级到完整的脚本语言的时候到了。

编辑:根据 Eric Renouf 的回答简化了 Sed 脚本。


cuo*_*glm 6

您可以使用许多标准工具,例如paste

:| paste -d' ' - - - - - file
Run Code Online (Sandbox Code Playgroud)

或更短awk

awk '{$1="     "$1}1' file
Run Code Online (Sandbox Code Playgroud)

或更便携perl

perl -pe '$_=" "x5 .$_' file
Run Code Online (Sandbox Code Playgroud)