Назад | Перейти на главную страницу

linux: более короткий вывод команды host

Я использую DNS для управления своими виртуальными хостами. Для этого я запрашиваю свой сервер имен с помощью команды host для определенных значений. Например:

> host -t txt mycl1.vz
mycl1.vz.myserver.de descriptive text "1026"

но мне нужно только 1026 как ответ без болтовни. В настоящее время я использую sed, чтобы удалить его, например:

| sed -e 's/.*descriptive text "\(.*\)"/\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

Мой первый выбор был бы копать, как указал Давуд. Если вы придерживаетесь host, вы можете заменить sed на:

cut -d \" -f 2