У меня есть 24 каталога в определенном каталоге (main_directory). Каждый из 24 каталогов имеет текстовый файл с именем DATA.txt.
Мне нужно использовать команду grep для извлечения указанного ниже шаблона для каждого текстового файла;
2* x = 3800689.6402 y = 882077.3636 z = 5028791.2953
2* x =
часть является постоянной для всех DATA.txt. Другие числовые значения являются переменными. Мне нужно извлечь вышеуказанную строку для каждого DATA.txt и сохранить их в другой текстовый файл. Какой скрипт я могу использовать для этого процесса?
решение1
Для рекурсивного поиска с использованием grep
используйте -R
опцию.
Чтобы найти точную строку, используйте -F
, чтобы она 2*
не рассматривалась как регулярное выражение.
Для поиска только по определенным именам файлов используйте --include
опцию. Комбинированный:
grep -FR --include=DATA.txt '2* x' main_directory > another_text_file
решение2
Поскольку вы знаете имя целевых файлов, вы также можете сделать
grep '^2\* x' */DATA.txt > newfile
Или, с awk
:
awk '^/2\* x/' */DATA.txt > newfile
И Перл:
perl -ne 'print if /2\* x/' */DATA.txt > newfile
решение3
Общий подход:
grep -r <pattern>
или
конкретный подход:
find -name <file patterns which you want to find> | xargs grep <pattern you looking for>