我有一串IP和端口号,如:“10.213.110.49.33482;10.213.106.12.20001:
”
两个ip由分号分隔。最后一个十进制显示端口号。
我需要的是转换上面的字符串,如下所示:
“10.213.110.49 20001:
”。
我想仅使用SHELL SCRIPT删除第一个IP的中间八位字节和端口号。我想从第一部分中提取IP而忽略端口号,而从第二部分IP中我只想要端口号
答案 0 :(得分:1)
使用sed:
sed 's/\.[0-9]*;.*\.\([0-9]*:\)/ \1/' <<< \
'10.213.110.49.33482;10.213.106.12.20001:'
给出:
10.213.110.49 20001:
答案 1 :(得分:0)
awk 解决方案:
s="10.213.110.49.33482;10.213.106.12.20001:"
echo $s | awk -F"[.;]" '{OFS=".";print $1,$2,$3,$4" "$10}'
输出:
10.213.110.49 20001:
答案 2 :(得分:0)
你可以使用bash替换,只需要几个步骤:
s='10.213.110.49.33482;10.213.106.12.20001:'
port="${s##*.}"
ip="${s%;*}"
ip="${ip%.*}"
echo "$ip $port"