sed也删除IP地址的一部分

杂物1

可以请别人帮我吗?我有这条线

test.txt

siemplog1.nw.lan / 172.31.180.22

我试过这个命令 sed -Ei "s/^[a-z A-Z].*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*/\1/" test.txt

结果应该是,172.31.180.22但我明白了2.31.180.22

谢谢

维克多·史翠比维

.*如,因为它可以(它是“贪婪”),并且由于许多字符的匹配[0-9]{1,3}可以匹配仅有1位,则17通过匹配.*2由匹配[0-9]{1,3}

您可以.*在所有非数字前停止

sed -Ei 's~.*[^0-9]([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*~\1~' test.txt

或之前/

sed -Ei 's~.*/ *([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*~\1~' test.txt

参见在线sed演示

s='siemplog1.nw.lan / 172.31.180.22'
sed -E 's~.*/ *([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*~\1~' <<< "$s"
# => 172.31.180.22

如果字符串始终采用这种格式,则可以将sed命令简化为

sed -E 's~.*/ *([0-9.]+)~\1~p'
sed -E 's~.*/ *([0-9.]+).*~\1~p'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章