#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 .