我有具有以下行的代理配置文件:如何在Linux中的命令行中将文本替换为文件?
Allow 212.21.3.44
我想,当它改变了我的新的IP地址来替换IP地址部分。在搜索时使用行号可能会更容易& ndash我认为配置文件在所有特定设置下都不会改变。
我该如何从命令行执行类似Perl,sed等的操作?
我有具有以下行的代理配置文件:如何在Linux中的命令行中将文本替换为文件?
Allow 212.21.3.44
我想,当它改变了我的新的IP地址来替换IP地址部分。在搜索时使用行号可能会更容易& ndash我认为配置文件在所有特定设置下都不会改变。
我该如何从命令行执行类似Perl,sed等的操作?
如果你想用sed来改变一个特定的行号,你可以使用:
sed -i '<line number> s/Allow .*$/Allow <new ip>/g' <filename>
sed -i 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/my.new.ip.here/' file.txt
的-i
标志将更改文件到位(取决于* nix中你的发行版/味道 - 在Ubuntu上对我的作品)。
和大多数Linux机器的可以加一个'-i'选项让'sed'让它直接对该文件进行更改。 – 2010-08-04 20:10:49
@Kaleb不知道!谢谢 - 更新我的答案。 – 2010-08-04 20:12:16
似乎危险批量更改文件中的所有IP地址到新的,当海报提到一个特定行 – 2010-08-04 20:15:18
的情况下,行号不会改变
sed -i '/Allow/s/Allow .*$/Allow <new ip>/' <filename>
很好用 - 谢谢! – jack 2010-08-04 20:18:21