我想用UnixCommandline替換配置文件,而不使用像vi或nano這樣的編輯器。Unix命令來搜索文件中的一行並替換它
一個例子可以是:
ServerAdmin [email protected]
我想找到與ServerAdmin
啓動的第一個或所有線路,並與替換它們:
ServerAdmin [email protected]
是否有任何命令,做這樣的事情? CygWin中也可以使用標準的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