在文本文件的每一行前添加##


30

我想在常规文本文件的所有行中添加哈希。终端和GUI的使用都很好-我只需要完成它即可。

Answers:


50

您可以sed用来做到这一点:

sed -i.bak 's/^/##/' file

这将用替换行(^)的开头##

使用该-i.bak开关,sed就地编辑文件,但创建扩展名为的备份副本.bak


1
+1这是我第一次遇到这种备份方法。我总是直接进行内联替换:sed 's/^/##/' -i file。在这种情况下,这将是首选,因为它不会出错。在其他情况下,可以结合使用此命令diff -u file.bak file以查看差异(如有必要,请通过进行传递less)。如果确认可以正常工作,则可以删除备份。否则,可以通过简单的恢复mv file.bak file
Lekensteyn 2011年

1
优雅。我在考虑类似的东西sed 's/^\(.*\)$/##\1/',但这要好得多。
安排

好人..我在考虑建议Vim这样做...
Sathish

这帮助我转换了一个阻止列表文件:)谢谢1+
Neil


6

在此期间:

gawk -i inplace '{print "##"$0}' infile

这使用了(相对较新的)GNU awk 4.1.0+的就地编辑插件



3

sed -i不是POSIX标准的,因此如果您是纯粹主义者,则需要使用ed

printf ",s/^/##/\nw\nq" | ed -s file.txt

3

这是perl比其他地方更简单的方法:

perl -pi -e 'print "##"' YOURFILEHERE

(ab)使用perl -p在执行中给出的命令后打印行的事实-e


0

您可以在Ex模式下使用Vim:

ex -sc '%s/^/##/|x' file
  1. % 选择所有行

  2. s 替代

  3. x 保存并关闭


0

可以使用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

将输出保存到新文件并使用它而不是原始文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.