将##添加到文本文件中的每一行

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

你可以使用sed来做到这一点:

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

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

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

这是使用perl解决这个问题的方法

 perl -e 'while (<>) {print "##$_"}' < infile > outfile 

我们在这里:

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

这使用GNU awk 4.1.0+的(比较新的)inplace 编辑插件 。

这是一种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更有效。

sed -i不是POSIX标准,所以如果你是纯粹主义者,你会想要使用ed

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

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

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

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

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

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

  2. 替代品

  3. x保存并关闭

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

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