Используйте это:
yum repolist all --color=never > repolist.txt
Независимо от этого, на самом деле вы получаете только три, а не четыре колонки вывода. Счетчик установок является частью столбца состояния. Полученный файл выглядит так:
Loaded plugins: fastestmirror, presto
Determining fastest mirrors
* base: centos-distro.cavecreek.net
* epel: mirror.oss.ou.edu
* extras: mirror.scalabledns.com
* ius: mirrors.kernel.org
* rpmforge: mirror.hmc.edu
* rpmforge-extras: mirror.hmc.edu
* updates: mirror.n5tech.com
repo id repo name status
C6.0-base CentOS-6.0 - Base disabled
C6.0-centosplus CentOS-6.0 - CentOSPlus disabled
C6.0-contrib CentOS-6.0 - Contrib disabled
C6.0-extras CentOS-6.0 - Extras disabled
[etc]
base CentOS-6 - Base enabled: 6,575
base-debuginfo CentOS-6 - Debuginfo disabled
c6-media CentOS-6 - Media disabled
centosplus CentOS-6 - Plus disabled
contrib CentOS-6 - Contrib disabled
*epel Extra Packages for Enterprise Linux 6 - x enabled: 12,247
[etc]
Только поставив альтернативу sed
. Это напечатает последний столбец из строки, разделенной пробелами.
sed 's/.*[[:space:]]\(.*\)$/\1/'
Я протестировал его для случаев, когда a.resolvers.level3.net
является единственной строкой в переменной $name, и она работает.
$ echo "$name"
1.2.2.4.in-addr.arpa domain name pointer a.resolvers.level3.net
$
$ echo "$name"|sed 's/.*[[:space:]]\(.*\)$/\1/'
a.resolvers.level3.net
$
$ name="a.resolvers.level3.net"
$ echo "$name"|sed 's/.*[[:space:]]\(.*\)$/\1/'
a.resolvers.level3.net
$
Еще один вариант — разрезать строку:
echo ${name##* }
Это разрежет строку и сохранит часть, начинающуюся с последнего пробела до конца.
${name <-- from name
## <-- trim the front
* <-- matches anything
' ' <-- until the last ' '
}
Гораздо более короткий ответ, не включающий никаких операций со строками, — это
dig +short -x 4.2.2.1
, который отображает
a.resolvers.level3.net.
и ничего более. Конечно, у вас должен быть установлен dig.
Проще всего использовать awk
и сказать ему напечатать последнее поле:
$ echo "$name" | awk '{print $NF}'
a.resolvers.level3.net
Конечно, если вам нужен только IP-адрес сервера, вы также можете получить это в name
в первую очередь, чтобы вам не нужно было обрабатывать его позже:
name=$(host $server | awk '{print $NF}')
name=$(host "$server" | grep -o '[^[:space:]]*$')
выберет завершающую часть выходных данных хост-команды.