Linux 替换文本中的一个数字并用新值克隆它

Linux 替换文本中的一个数字并用新值克隆它,linux,shell,replace,Linux,Shell,Replace,我需要更改规则中的一些数字,比如192.168.1.2到192.168.1.x,其中x是3-254之间的值。我们将有多行,一行的值为192.168.1.2,另一行的值为192.168.1.3,依此类推。 我不知道该怎么做。 如果有人知道在linux中使用脚本的程序或方法,请告诉我。这里有一种方法使用GNU sed。只需将X替换为您希望使用的值即可 sed 's/\(\([0-9]\{1,3\}\.\)\{3\}\)[0-9]\{1,3\}/\1X/g' file.txt 测试: 结果: 192

我需要更改规则中的一些数字,比如192.168.1.2到192.168.1.x,其中x是3-254之间的值。我们将有多行,一行的值为192.168.1.2,另一行的值为192.168.1.3,依此类推。 我不知道该怎么做。
如果有人知道在linux中使用脚本的程序或方法,请告诉我。

这里有一种方法使用
GNU sed
。只需将
X
替换为您希望使用的值即可

sed 's/\(\([0-9]\{1,3\}\.\)\{3\}\)[0-9]\{1,3\}/\1X/g' file.txt
测试:

结果:

192.168.1.X

另一种选择是,使用
awk
来避免多毛的正则表达式路径(一般来说正则表达式没有问题,但有时它们会让你的眼睛流血……):


没有;如果你需要改变192.1681.219-1681.1.x或192.1681.x到192.1681.1.2,这个问题的副本可能只是重复的,因为这个问题要求脚本化,而另一个问题是C++。尽管如此,这个问题仍不明确,值得结束。
192.168.1.X
awk -F. '{printf "%s.%s.%s.x\n",$1,$2,$3}'