我在一个特定目录 (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>