Копируем строки из файлов средствами linux

Как то понадобилось мне из двух тысяч текстовых файлов (из 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

This entry was posted in Uncategorized on by .