![linux:更短的“host”命令输出](https://linux22.com/image/619227/linux%EF%BC%9A%E6%9B%B4%E7%9F%AD%E7%9A%84%E2%80%9Chost%E2%80%9D%E5%91%BD%E4%BB%A4%E8%BE%93%E5%87%BA.png)
我使用 dns 来管理我的虚拟主机。为此,我使用 host 命令查询我的名称服务器以获取我需要的某些值。例如:
> host -t txt mycl1.vz
mycl1.vz.myserver.de descriptive text "1026"
但我只需要1026
没有闲聊的答案。目前我正在使用 sed 将其删除,如下所示:
| sed -e 's/.*descriptive text "\(.*\)"/\1/'
但这似乎有点“不稳定”,我想知道是否没有任何命令可以首先给我简单的输出?
答案1
使用dig(1)
使用+short
标志来代替:
$ host -t txt google.com
google.com descriptive text "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"
$ dig -t txt google.com +short
"v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"
如果您想删除引号,只需通过以下方式过滤输出sed
:
$ dig -t txt google.com +short | sed 's/"//g'
v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all
答案2
正如 dawud 指出的那样,我的第一选择是 dig。如果您坚持使用“host”,则可以将 sed 替换为:
cut -d \" -f 2