问题描述
我想在常规文本文件的所有行中添加哈希。我对终端和GUI的使用都很好-我只需要完成它即可。
最佳方案
您可以使用sed
来做到这一点:
sed -i.bak 's/^/##/' file
这用##
代替了行的开头(^
)。
使用-i.bak
开关,sed
编辑文件in-place,但创建扩展名为.bak
的备份副本。
次佳方案
这是使用perl解决此问题的方法
perl -e 'while (<>) {print "##$_"}' < infile > outfile
第三种方案
在此期间:
gawk -i inplace '{print "##"$0}' infile
这对GNU awk 4.1.0+使用(相对较新的)inplace editing plugin。
第四种方案
这是bash
的方式:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
(在bash
shell中,不带其他参数运行read -r
的工作方式类似于IFS= read -r REPLY
。)
从风格上讲,这受beav_35’s perl solution的启发,我承认对于大型文件,它的运行速度可能要快得多,因为在文本处理方面,perl
可能比shell效率更高。
第五种方案
sed -i
不是POSIX-standard,因此,如果您是纯粹主义者,则需要使用ed
:
printf ",s/^/##/\nw\nq" | ed -s file.txt
第六种方案
这是比其他地方更简单的perl
方法:
perl -pi -e 'print "##"' YOURFILEHERE
这(ab)利用了perl -p
执行-e
中给出的命令后打印行的事实。