поиск, сортировка и извлечение строки из текстовых файлов с помощью bash

#bash #sorting #sed #find #ls

#bash #сортировка #sed #Найти #ls

Вопрос:

Я пытаюсь создать скрипт bash, который для меня слишком сложен. Мне нужно выполнить поиск в каталоге определенных текстовых файлов, заканчивающихся на «FA», отсортировать результаты в алфавитном порядке и взять строку 13 из каждого и вставить ее в новый текстовый файл.

Я прочитал, и это то, что мне удалось до сих пор. Эта команда выполняет поиск и сортировку результатов:

 find . -iname "*FA" -exec ls {} ; | sort
 

и это работает нормально.

Эта команда выполнит поиск и возьмет строку 13 каждого файла и вставит ее в новый файл с именем «FACC.txt «:

 find . -iname "*FA" -exec sed -n 13p >FACC.txt {} ;
 

и это также отлично работает.

Теперь мне нужно объединить два, то есть отсортировать результаты и взять строку 13 из каждого!

Спасибо! Любая помощь приветствуется!

Ответ №1:

Нравится это?

 find . -iname "*FA" -exec ls {} ; | sort | xargs -n 1 sed -n 13p
 

Комментарии:

1. Я не знаю, что произошло, но вместо строки 13 приведенный выше код выдает мне строку 11 каждого файла, заканчивающуюся на ‘* FA’

2. С добавлением>FACC.txt в конце концов, теперь все работает отлично!!! Спасибо!!!

3. Эта -exec ls {} ; часть не нужна — find по умолчанию печатаются пути к соответствующим файлам.

4. Я сохранил ее, предполагая, что нам нужно содержимое *FA каталогов. Хотя я бы также сделал это, используя find only .