1-е решение: Не могли бы вы попробовать следовать с GNU awk
. nextfile
- это очень хорошая опция в GNU awk
, которая пропускает все строки в текущем Input_file, когда условие имеет значение MET.
awk 'FNR==2{print;nextfile}' *.txt > output_file
2-е решение: Если у вас нет GNU awk
, попробуйте. Здесь, поскольку мы предполагаем, что в awk
НЕТ nextfile
, поэтому я создаю flag
во второй строке каждого файла, а когда он ИСТИНА, просто перехожу на следующую строку / пропускаю их и пытаюсь когда-нибудь сохранить. Обратите внимание, что значение этого флага будет RESET и в первой строке каждого файла.
awk 'FNR==1{flag=""} FNR==2{print;flag=1} flag{next}' *.txt > output_file
3-е решение: Добавление while
и find
также подходит здесь с head
и tail
. AFAIK голова и хвост не должны читать весь файл.
while read line
do
head -n +2 "$line" | tail -1
done < <(find -type f -name "*.txt") > "output_file"