Если нужно найти определенное слово в файлах, то можно использовать стандартный поиск. Если нужно вытащить все строки, где упоминается определенное слово, то есть grep (команда: grep слово имя_файла). А вот awk поможет в том случае, когда строки имеют общие символы, но вот нужные нам слова постоянно меняются.
И так, чтобы вытащить определенные фразы из файла можно использовать следующую команду:
Например, есть текст с именем text.txt и содержимым:
xxx: Привет!
yyy: И тебе не болеть.
xxx: Пока тогда.
В результате такого запроса:
У нас останется:
Привет!
Пока
Если же нужно вытащить всю строку после определенного выражения, то для этого есть такой пример:
0 – обозначает, что вытаскиваем целую строку, а не определенное слово (аналог команды grep);
2 – каким по счёту будет первое слово для вытаскивание строки после него.
Результатом выше написанной команды будет:
Привет!
Пока тогда.
Если же у нас группа файлов, то в начале нужно подготовить файл с путями для всех файлов (Да, даешь тавтологию!).
Для примера пусть этим файлом будет list.txt с содержимым:
/home/zegi/text.txt
/home/zegi/text2.txt
После чего готовим скрипт:
#!/bin/bash
for n in $(cat list.txt);
do
m=`echo $n`
cat $m | awk '/xxx:/ {print $0}' | cut -f 2- -d' ' >> файл_вывода
done
Незабываем сделать скрипт исполняемым (chmod +x имя_скрипта) и запустить (./имя_скрипта).
На самом деле, у awk огромное количество применений. Для более подробной информации наберите man awk. Лично мне всегда хватало того функционала, который описан в примерах.