用于多个目录中的文本文件的 grep 命令

用于多个目录中的文本文件的 grep 命令

我在一个特定目录 (main_directory) 中有 24 个目录。每 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:

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>

相关内容