仅解析来自 resolvectl 的 IP 地址
Parse only the IP address from resolvectl
我只想剪切IP地址。我试过 cut -d':' -f1
但这需要我不想要的其他词。
resolvectl query remote.geo.com
但我有 :
remote.geo.com: X.X.X.X -- link: enp0s31f6
我只要
X.X.X.X
第一行我可以,但是还有其他字
您可以 cut
按 space 并选择第二个字段:
resolvectl query remote.geo.com | cut -d' ' -f2
使用awk
:
remote.geo.com: X.X.X.X -- link: enp0s31f6|awk '{print }'
as cut
如果分隔符是 ' '
并且其中有多个 spaces
将失败..
resolvectl query remote.geo.com|grep -oE '[[:space:]][[0-9.]+[[:space:]]'|tr -d '[:space:]'
正则表达式的两边都由 space 限定,以避免在输出的其他字段(例如 link 信息中)拾取数字串,并且tr
之后删除它们。
像大多数现代命令一样,resolvectl
有一个关闭装饰的标志,这使得解析其输出更容易一些。
resolvectl query --legend=false remote.geo.com | awk '{print }'
如果您不习惯使用 resolvectl
,您可以从 dig
或(某些版本的)host
:
获得 machine-readable 输出
dig +short remote.geo.com
我只想剪切IP地址。我试过 cut -d':' -f1
但这需要我不想要的其他词。
resolvectl query remote.geo.com
但我有 :
remote.geo.com: X.X.X.X -- link: enp0s31f6
我只要
X.X.X.X
第一行我可以,但是还有其他字
您可以 cut
按 space 并选择第二个字段:
resolvectl query remote.geo.com | cut -d' ' -f2
使用awk
:
remote.geo.com: X.X.X.X -- link: enp0s31f6|awk '{print }'
as cut
如果分隔符是 ' '
并且其中有多个 spaces
将失败..
resolvectl query remote.geo.com|grep -oE '[[:space:]][[0-9.]+[[:space:]]'|tr -d '[:space:]'
正则表达式的两边都由 space 限定,以避免在输出的其他字段(例如 link 信息中)拾取数字串,并且tr
之后删除它们。
像大多数现代命令一样,resolvectl
有一个关闭装饰的标志,这使得解析其输出更容易一些。
resolvectl query --legend=false remote.geo.com | awk '{print }'
如果您不习惯使用 resolvectl
,您可以从 dig
或(某些版本的)host
:
dig +short remote.geo.com