我正在寻找一个命令行或 bash 脚本,它会在文件中每行的开头之前添加 5 次空格。
例如:
abc
加空格5次后
abc
答案1
使用 GNU sed:
sed -i -e 's/^/ /' <file>
将用 5 个空格替换每行的开头。就地修改-i
文件,-e
给出一些要sed
执行的代码。 s
告诉sed
进行替换,^
匹配行的开头,然后后两个/
字符之间的部分将替换开头匹配的部分,即本例中的行的开头。
答案2
您可以使用sed
sed 's_^_ _' tmpin > tmpout
或者awk
awk '{print " " $0}' tmpin > tmpout
或者粘贴(谢谢库恩勒姆)
:| paste -d' ' - - - - - file
小心。这些可能会让人上瘾。您可以解决许多简单的问题,但总有一天您需要升级到完整的脚本语言。
编辑:Sed 脚本根据 Eric Renouf 的答案进行了简化。
答案3
您可以使用许多标准工具,例如paste
:
:| paste -d' ' - - - - - file
或更短的awk
:
awk '{$1=" "$1}1' file
或更便携perl
:
perl -pe '$_=" "x5 .$_' file
答案4
您可以在 Ex 模式下使用 Vim:
ex -sc '%s/^/ /|x' file
%
选择所有行s
代替x
保存并关闭