Как то понадобилось мне из двух тысяч текстовых файлов (из 2402 файлов если быть точным) выдернуть конкретные строки: с 4 по 6. Перепробовал много разных методов а решение было на поверхности. Bash + cut друзья на век :). Спасибо коллеге что подсказал. Итак скрипт:
for l in $(ls ./); do cat $l | head -n 6 | tail -n3; done > ../bla-bla-bla.txt
Поясню что здесь происходит:
for l in $(ls ./);
– конструкция которой мы пробегаем по всем файлам в директории
do cat $l | head -n 6 | tail -n3; done
– команда на выборку строк, мы сначала выводим первые 6 строк файла (head -n6) а потом из этих 6 строк показываем 3 нижних (tail -n3). А ларчик просто открывался :).
Соответственно конструкцию c head и tail можно заменить на sed -n 4,6p