awk обрабатывает записи как-бы в табличном режиме. То есть каждую строку таблицы исполняет те команды, что в {} и соответственно колонкам заполняет переменные $[0-9]+. По умолчанию разделитель колонок это непрерывные пробелы или табуляции (в регекспе это какбы [ \t]+), а разделитель строк это \n, тоесть символ перевода строки. С помощью -vRS=, я указал, что разделитель строк это запятая и с помощью print $1 я вывожу значение только первой колонки.
Пользователь решил продолжить мысль 30 Ноября 2009, 01:31:50:
в перечисляемых зависимостях надо еще учитывать "|"
Да, сейчас это не учитывается, берется только первый вариант. Можно, если просто брать все варианты сделать так:
dpkg -I apache2_2.2.12-1ubuntu2.1_all.deb | grep Depends: | sed 's/Depends://' | awk -vRS='[,|]' '{print $1}'
зы. Интересный парсер на форуме. То "у6унту" на "ubuntu" заменяет, то щас "\n" на перевод строки заменил а "\t" на табуляцию... Зато при редактировании хоть можно оставить как хочешь... Только кроме русского "у6унту".