我正在尝试使用UnixCommandline替换配置文件而不使用像vi或nano这样的编辑器。
一个例子可能是:
ServerAdmin mail@example.com
我想找到以ServerAdmin
开头的第一行或所有行,并将其替换为:
ServerAdmin secret@secret.com
有没有命令做这样的事情?应该可以使用CygWin中提供的标准UNIX工具。
答案 0 :(得分:5)
sed -i 's/^ServerAdmin .*$/ServerAdmin secret@secret.com/' in-filename
答案 1 :(得分:2)
所有以前的答案都是正确的,但您也可以使用perl one liner
perl -p -i -e 's/ServerAdmin/ServerAdmin secret@secret.com/g' your_file_name
答案 2 :(得分:1)
您可以使用awk
执行此操作,具体如下:
pax> echo 'xyzzy plugh
ServerAdmin mail@example.com
twisty passages' | awk '
/^ServerAdmin /{$0 = "ServerAdmin secret@secret.com"}{print}'
xyzzy plugh
ServerAdmin secret@secret.com
twisty passages
换句话说,通过awk
命令管道文件。它会找到以"ServerAdmin<space>"
开头的行,并在打印之前修改这些行。与模式匹配的所有不的行将按原样打印。
显然这是针对您指定的简单案例。如果事实证明您的输入格式更复杂,您可能需要对其进行调整,但awk
仍应该完成任务。
请记住,如果要将输出捕获到 new 文件而不是标准输出,请使用:
awk 'above awk command goes here' currentFile >newFile