【发布时间】:2013-11-14 02:33:13
【问题描述】:
谁能告诉我如何用 1 个命令批量替换多个文件中的 IP?这个 sed 命令有什么作用?
sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/x.x.x.x/g' *
这里真的需要帮助。谢谢!
【问题讨论】:
谁能告诉我如何用 1 个命令批量替换多个文件中的 IP?这个 sed 命令有什么作用?
sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/x.x.x.x/g' *
这里真的需要帮助。谢谢!
【问题讨论】:
这个 sed 可以:
s/pattern1/pattern2/g
将pattern1 替换为pattern2
[0-9]\{1,3\} = 1 to 3 来自0-9的数字\. 表示单个点.
所以理论上这应该将所有文件中的所有 IP 更改为给定 IP x.x.x.x* 表示此文件夹中的所有文件
所以没有留下原始IP,所以要小心。
PS 这不是 100% 工作的。例如此号码3452.343.13.34(不是IP)将更改为3x.x.x.x
【讨论】:
echo "test 10.5.2.20 and another 192.168.12.23" | sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/x.x.x.x/g' test x.x.x.x and another x.x.x.x
sed "s/\([12]\{0,1\}[0-9]\{0,1\}[0-9]\.\)\{3\}[12]\{0,1\}[0-9]\{0,1\}[0-9]/x.x.x.x/g"
但是
如果这些想法很重要,那么将构建一个更复杂的 sed(我认为是级联的)
sed "s/.*/#&#/;s/\([^0-9.]\)\([012]\{0,1\}[0-9]\{0,1\}[0-9]\.\)\{3\}[12]\{0,1\}[0-9]\{0,1\}[0-9]\([^0-9.]\)/\1x.x.x.x\3/g;s/^#\(.*\)#$/\1/"
(255 到 300 之间的数字仍然可能)
【讨论】: