【发布时间】:2015-07-11 17:37:38
【问题描述】:
我需要用某个数字替换一系列数字。我真的很努力地用 sed(如 sed "s/[33-64]/64/")或 awk 自己编写代码,但总是得到错误的结果。它倾向于替换单个数字而不是数字......我需要的是:替换 0-32 -> 32、33-64 -> 64、65-128 -> 128、129-255 -> 255。在这些之间数字是 IP,应该保持不变。我认为这个命令正在选择所有,但 IP:
sed '/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/! ... '
所以我有一个这样的文件:
65.74.16.161
232
10.128.8.72
63
10.128.14.13
100
10.128.8.58
32
10.128.4.129
60
10.128.240.18
59
它应该是这样的:
65.74.16.161
255
10.128.8.72
64
10.128.14.13
128
10.128.8.58
32
10.128.4.129
64
10.128.240.18
64
【问题讨论】:
-
sed是一个糟糕的方法。你必须写一些疯狂的表达,比如's/\<\([0-9]\|[12][0-9]\|3[012]\)\>/32/g'。