LINUX.ORG.RU

велосипед

 , , , ,


0

0

когда пилил suspend в ram на ноуте нужно было заносить вывод различных команд в файлы. Например вывод lsmod >>

Module                  Size  Used by
snd_hda_codec_hdmi     24913  1 
lirc_dev                7508  1 ir_lirc_codec
snd_hda_codec_idt      48028  1 
snd_hda_codec          86035  3 snd_hda_codec_hdmi,snd_hda_codec_idt,snd_hda_intel
Для поста вырезал большую часть вывода,естественно там вывод поболее будет. В конфиг мне нужно было написать только столбец Module .Для этого на с++ написал простой парсер который берёт первое слово в каждой строке in файла и засовывает через запятую и пробел в out файл >>
ablk_helper, cryptd, aes_i586, aes_generic, snd_hda_codec_hdmi, ir_lirc_codec, lirc_dev, ir_mce_kbd_decoder, arc4, uvcvideo, ir_sany 
чего собственно надо?
наверняка всё это можно сделать на баше да ещё и в одну строку :D

★★★★★

lsmod | awk '/Module/{next;} {printf ("%s%s",(c==1 ? ", " : ""), $1); c=1 }'
Slavaz ★★★★★ ()
awk '{ if (NR!= 1) {if (NR!=2) printf ", "; printf $1}}'
x-signal ()
lsmod | grep -v Module | awk '{print $1}' | tr '\n' ',' | sed -e 's/,/, /g'

Можно было бы подумать и сделать красивее с меньшим количеством конвееров(на том же awk или perl), но я лично для таких одноразовых решений обычно пишу, первое, что выполняет условия. Оптимизировать надо только если планируется где-то потом ещё это часто применять.

shell-script ★★★★★ ()
Ответ на: комментарий от shell-script

Пока я писал, пришли люди и сделали по-нормальному. :)

shell-script ★★★★★ ()

как ни странно, но только вариант

awk '{ if (NR!= 1) {if (NR!=2) printf ", "; printf $1}}'
сработал как надо
два других брали столбец не с начала
всем спасибо за участие )

smilessss ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.