将##添加到文本文件中的每一行
我想在常规文本文件中为所有行添加哈希值。 我使用终端和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
-
%
选择所有行 -
替代品
-
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
将输出保存到新文件并使用它而不是原始文件