使用linux shell编辑一行文本文件

时间:2015-06-19 10:46:58

标签: linux shell sed edit

我需要使用linux-shell更改文本文件中的IP地址。我怎样才能做到这一点?你知道正则表达式的一个很好的来源吗?

textfile.txt包含这样的内容:

# text text ffeefe 
Whatever text text ffeefe 
# text text ffeefe 
#
IPAddress : 192.168.200.40
#
# text text ffeefe
#
Whatever text text ffeefe 
# text text ffeefe 

这就是我要找的:

sed -i / find XXX.XXX.XXX.XXX / 192.168.200.41 / textfile.txt

IP可以是格式为XXX.XXX.XXX.XXX的任何内容,例如192.168.200.40

2 个答案:

答案 0 :(得分:1)

虽然 fedorqui 在询问有关特定内容后IP发生的更多信息时是正确的,但我会提供(简单)解决方案来查找任何IPv4字符串。

表达式是:

[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
在sed中使用它看起来像这样:

sed -i -r 's/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/newip/' file

另一方面,如果在IP之前修复了“IPAddress:”,那么OP应该只使用他们想要的IP。

答案 1 :(得分:0)

这将找到以IPAddress :开头的行,并将数字更改为新IP。

sed -i -r '/^IPAddress :/s/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/192.168.200.41/' textfile.txt