0

谁能告诉我如何通过 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' *

这里真的需要帮助。谢谢!

4

2 回答 2

1

这个 sed 做:

s/pattern1/pattern2/g

替换pattern1pattern2

[0-9]\{1,3\}= 1 to 3来自的数字0-9
\.表示单个点.

所以理论上这应该将所有文件中的所有 IP 更改为给定 IPx.x.x.x
*意味着该文件夹中的所有文件
所以没有留下原始 IP,所以要小心这个。

PS这不是100%的工作。示例此号码3452.343.13.34(不是 IP)将更改为3x.x.x.x

于 2013-11-13T07:34:07.417 回答
0
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"

  1. 如果数字(数字)在之前或之后,则忽略它,并将内部部分视为 IP
  2. 如果出现大于 255 和小于 300 的数字,它们仍然被视为 IP
  3. 不包括以 0 开头的 IP(如 120.008.099.234)

如果这些想法很重要,那么将构建一个更复杂的 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 之间的可能数字)

于 2013-11-13T10:09:22.033 回答