URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9353
[ Назад ]

Исходное сообщение
"Как сбить нескострочный выхлоп в одну строку"

Отправлено Jinx , 11-Янв-12 19:00 
Предположим что я хочу взять ДНСы с resolv.conf

# cat /etc/resolv.conf | awk '{print $2}'
8.8.8.8
8.8.4.4

но вывести все это в таком виде:

8.8.8.8 8.8.4.4

А еще лучше:

8.8.8.8, 8.8.4.4

Как сбить вывод ката (и не только) в одну строку? Помогите начинающему скриптеру.


Содержание

Сообщения в этом обсуждении
"Как сбить нескострочный выхлоп в одну строку"
Отправлено кегна , 11-Янв-12 20:44 
>[оверквотинг удален]
> но вывести все это в таком виде:
>
 
> 8.8.8.8 8.8.4.4
>

> А еще лучше:
>
 
> 8.8.8.8, 8.8.4.4
>

> Как сбить вывод ката (и не только) в одну строку? Помогите начинающему
> скриптеру.

cat /etc/resolv.conf | awk '{print $2}' | xargs


"Как сбить нескострочный выхлоп в одну строку"
Отправлено кегна , 11-Янв-12 20:56 
>[оверквотинг удален]
>> но вывести все это в таком виде:
>>
 
>> 8.8.8.8 8.8.4.4
>>

>> А еще лучше:
>>
 
>> 8.8.8.8, 8.8.4.4
>>

>> Как сбить вывод ката (и не только) в одну строку? Помогите начинающему
>> скриптеру.

$cat /etc/resolv.conf | awk '{print $2}' | xargs
8.8.8.8 8.8.4.4

$cat /etc/resolv.conf | awk '{print $2}' | xargs | sed 's/\ /,\ /g'
8.8.8.8, 8.8.4.4


"Как сбить нескострочный выхлоп в одну строку"
Отправлено Jinx , 12-Янв-12 11:54 
> $cat /etc/resolv.conf | awk '{print $2}' | xargs
> 8.8.8.8 8.8.4.4
> $cat /etc/resolv.conf | awk '{print $2}' | xargs | sed 's/\ /,\ /g'
> 8.8.8.8, 8.8.4.4

То что нужно. Большое спасибо!
Вот как все просто реализуется - а я вот начал уже цикл писать... Век живи - век учись.
Ушел штудировать маны по xargs и sed.


"Как сбить нескострочный выхлоп в одну строку"
Отправлено cryo , 12-Янв-12 18:43 
>> $cat /etc/resolv.conf | awk '{print $2}' | xargs
>> 8.8.8.8 8.8.4.4
>> $cat /etc/resolv.conf | awk '{print $2}' | xargs | sed 's/\ /,\ /g'
>> 8.8.8.8, 8.8.4.4
> То что нужно. Большое спасибо!
> Вот как все просто реализуется - а я вот начал уже цикл
> писать... Век живи - век учись.
> Ушел штудировать маны по xargs и sed.

заодно и man tr зацепите :)

$cat /etc/resolv.conf | awk '{print $2}' | tr '\n' ' '
8.8.8.8 8.8.4.4
$cat /etc/resolv.conf | awk '{print $2}' | tr '\n' ' ' | sed 's/\ /,\ /g'
8.8.8.8, 8.8.4.4


"Как сбить нескострочный выхлоп в одну строку"
Отправлено Andrey Mitrofanov , 13-Янв-12 19:16 
|paste -sd,

"Как сбить нескострочный выхлоп в одну строку"
Отправлено Andrey Mitrofanov , 13-Янв-12 19:22 
> # cat /etc/resolv.conf | awk '{print $2}'

|awk '$1=="server"{s=(s?s",":"")$2}END{print s}'
|awk '$1=="server"{printf"%s%s",(f?",":""),$2;f=1}END{print""}'


"Как сбить нескострочный выхлоп в одну строку"
Отправлено кегна , 13-Янв-12 21:25 
>> # cat /etc/resolv.conf | awk '{print $2}'
>  |awk '$1=="server"{s=(s?s",":"")$2}END{print s}'
>  |awk '$1=="server"{printf"%s%s",(f?",":""),$2;f=1}END{print""}'

| sed ':a;N;$!ba;s/\n/\ /g'
| sed ':a;N;$!ba;s/\n/,\ /g'


"Как сбить нескострочный выхлоп в одну строку"
Отправлено pavlinux , 14-Янв-12 18:23 
> А еще лучше:
> 8.8.8.8, 8.8.4.4

cat /etc/resolv.conf | awk '{printf $2", "}'