Unix命令来搜索文件中的一行并替换它
我想用UnixCommandline替换配置文件,而不使用像vi或nano这样的编辑器。Unix命令来搜索文件中的一行并替换它
一个例子可以是:
ServerAdmin [email protected]
我想找到与ServerAdmin
启动的第一个或所有线路,并与替换它们:
ServerAdmin [email protected]
是否有任何命令,做这样的事情? CygWin中也可以使用标准的UNIX工具。
sed -i 's/^ServerAdmin .*$/ServerAdmin [email protected]/' in-filename
这个工程很神奇。感谢这个杰出的答案 – Robin 2013-03-02 12:19:40
您可以使用awk
要做到这一点,按照下面的成绩单:
pax> echo 'xyzzy plugh
ServerAdmin [email protected]
twisty passages' | awk '
/^ServerAdmin /{$0 = "ServerAdmin [email protected]"}{print}'
xyzzy plugh
ServerAdmin [email protected]
twisty passages
换句话说,管文件通过awk
命令。它会查找以开头的行,并在打印这些行之前修改这些行。全部行而不是匹配的模式将按原样打印。
很明显,这是为您的指定简单的情况。如果结果显示你的输入格式比较复杂,你可能需要调整它,但awk
仍然可以胜任。
请记住,如果你想捕捉的输出到新文件,而不是标准输出,使用:
awk 'above awk command goes here' currentFile >newFile
谢谢。我会在一开始就和@John Zwinks一起回答,因为它更容易。 – Robin 2013-03-02 12:20:40
所有以前的答案是正确的,但你也可以做到这一点与Perl的一个班轮
perl -p -i -e 's/ServerAdmin/ServerAdmin [email protected]/g' your_file_name
你去那里,@Robin,你有权力的三个阶段:用sed,awk和perl的,递增的顺序:-)其中之一应能为你做它。 – paxdiablo 2013-03-02 12:17:01