从ip删除中间八位字节,直到满足某些条件

时间:2017-03-31 06:53:55

标签: string awk sed strip string-substitution

我有一串IP和端口号,如:“10.213.110.49.33482;10.213.106.12.20001:” 两个ip由分号分隔。最后一个十进制显示端口号。
我需要的是转换上面的字符串,如下所示: “10.213.110.49 20001:”。
我想仅使用SHELL SCRIPT删除第一个IP的中间八位字节和端口号。我想从第一部分中提取IP而忽略端口号,而从第二部分IP中我只想要端口号

3 个答案:

答案 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"