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 脚本。
您可以使用许多标准工具,例如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)