使用 linux shell 编辑文本文件行

Edit line a textfile using linux shell

我需要使用 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

虽然 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。

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

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