【发布时间】:2016-05-14 05:13:30
【问题描述】:
我正在尝试弄清楚如何使用 sed 执行以下操作:
我得到了一个 IPv4 地址列表,我正试图让它们在显示中都统一。例如:1.2.4.32 将是 001.002.004.032。 10.125.62.1 将是 010.125.062.001。
我正在尝试使用 sed 来做到这一点,因为这就是我现在正在学习的内容。
我得到了这两个,它将采用任何一位或两位数字并在前面附加零。
sed 's/\<[0-9][0-9]\>/0&/g' file
sed 's/\<[0-9]\>/00&/g' file
但这遇到了一个更实际的问题,因为我的输入文件将在其他非 IP 地址位置有一位或两位数字。示例:
host-1 1.2.3.32
所以我需要一种方法来寻找完整的 IP 地址,我认为可以通过这个来实现
sed 's/\.\<[0-9]\>/00&/g'
但这不仅忽略了1.something.something.something 的大小写,而且出于某种原因,它还在第三个八位字节的末尾附加了00。
echo "10.10.88.5" | sed 's/\.\<[0-9]\>/00&/g'
10.10.8800.5
示例文件:
Jumpstart Server jumo 10.20.5.126
Jumpstart Server acob 10.20.5.168
NW1 H17 Node cluster 10.10.161.87
NW1 H17 Node-1 10.10.161.8
NW1 H17 Node-2 10.10.161.9
ts-nw1 10.10.8.6
【问题讨论】:
-
文件的内容有模式吗?发布文件的摘录
-
按要求。文件
-
谢谢,这让问题更清楚了:)
-
我已经有一些 sed 命令可以稍微清理文件,例如所有非 IP 条目将被连接成一个字符串,下划线连接它们,去掉多余的制表符,空白处为空行等等我从不同的人那里得到这些文件,他们都以自己特殊的方式做事。