Команда grep для текстового файла в нескольких каталогах

Команда grep для текстового файла в нескольких каталогах

У меня есть 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>

Связанный контент