Answers:
这是使用perl解决此问题的方法
perl -e 'while (<>) {print "##$_"}' < infile > outfile
-p
开关也很有用:perl -pe 's/^/##/' infile > outfile
。(还有-i[extension]
用于替换目标文件的开关。)perldoc.perl.org/perlrun.html#%2a-p%2a
这是一种bash
方法:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
(在bash
shell中,read -r
不带其他参数运行的方式类似于IFS= read -r REPLY
。)
从风格上讲,这是受到beav_35的perl解决方案的启发的,我承认对于大型文件,它可能运行得更快,因为perl
在文本处理方面,它可能比shell效率更高。
可以使用python的映射功能和重定向stdin来完成:
$ cat input.txt
lorem ipsum
quick brown fox
hello world
$ python -c 'import sys;print "".join(map(lambda x: "##"+x,sys.stdin.readlines()))' < input.txt
##lorem ipsum
##quick brown fox
##hello world
将输出保存到新文件并使用它而不是原始文件
sed 's/^/##/' -i file
。在这种情况下,这将是首选,因为它不会出错。在其他情况下,可以结合使用此命令diff -u file.bak file
以查看差异(如有必要,请通过进行传递less
)。如果确认可以正常工作,则可以删除备份。否则,可以通过简单的恢复mv file.bak file
。