仅解析来自 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