распечатать определенную строку из нескольких файлов

У меня есть коллекция из 5000+ файлов, и я просто хочу создать файл output.txt который содержит 27-ю строку всего файла вместе с именем файла. хорошо, что я noob на уровне Linux, так что я получил из Интернета, чтобы выбрать определенную строку из одного файла, используя команды awk или sed как $sed -n 27p *.txt >>output.txt

например, мои файлы в каталоге:

  log_1.txt
 log_2.txt
 log_3.txt
 log_4.txt
 ,
 ,
 ,

Я хочу 27-ю строку каждого файла с именем файла перед или позади печатной строки в новом файле output.txt .

4 Solutions collect form web for “распечатать определенную строку из нескольких файлов”

  awk 'FNR==27 {print FILENAME, $0}' *.txt >output.txt 
  • FILENAME – встроенная переменная awk для текущего имени входного файла
  • FNR ссылается на номер строки текущего файла
  • $0 означает целую строку

Использование цикла for :

 { for i in *.txt; do echo "$i : $(sed -n '27p' "$i")"; done ;} >output.txt 

Цикл for может быть дорогим, так как у вас есть 5000+ файлов, но с учетом текущих аппаратных средств не должно быть проблемой.


Ускоренный способ, покидая sed после строки 27 (спасибо @Fiximan) :

 { for i in *.txt; do echo "$i : $(sed -n '27p;q' "$i")"; done ;} >output.txt 

Другая возможность:

 for i in * ; do echo -n $i" : " ; head -n 27 "$i" | tail -n 1 ; done > output.txt 

Простое использование awk:

 awk 'FNR==27 {print FILENAME,$0}' /path/to/files/log_*.txt > outfile.txt 
  • Как вложить глобальные совпадения с sed?
  • Solaris использует генератор последовательности в начале каждой новой строки
  • Конкретная замена уровня столбца
  • Выберите строки, начинающиеся с определенных номеров
  • Скопируйте текстовые строки из файла и добавьте их в один и тот же файл с префиксом средней линии или удалите префикс средней строки
  • «Sed» переписать файл для отображения целых чисел и удалить оставшиеся символы
  • Почему «while .. read .. << EOL» выполняет расширение переменной, но <файл и | не?
  • Помощь с повторением поля A в CSV-файле, где поле B имеет указанное значение
  • Анализ файлов журнала с помощью sed -e. Нужно учитывать уникальные имена классов
  • Получите первое соответствие шаблону в строке, не использующей разрез
  • Преобразование таблицы csv в HTML
  • Linux и Unix - лучшая ОС в мире.