web-dev-qa-db-ja.com

複数のディレクトリにあるテキストファイルのgrepコマンド

特定のディレクトリ(main_directory)に24個のディレクトリがあります。各24のディレクトリには、DATA.txtという名前のテキストファイルがあります。

Grepコマンドを使用して、各テキストファイルの特定のパターンを抽出する必要があります。

2* x  = 3800689.6402     y  = 882077.3636     z  = 5028791.2953

2* x =部分は、すべてのDATA.txtで一定です。他の数値は可変です。 DATA.txtごとに上記の行を抽出し、別のテキストファイルに保存する必要があります。このプロセスに使用できるスクリプトはどれですか?

4
deepblue_86

grepを使用して再帰的に検索するには、-Rオプションを使用します。

正確な文字列を検索するには、-Fを使用して、2*が正規表現として扱われないようにします。

特定のファイル名のみを検索するには、--includeオプションを使用します。組み合わせ:

grep -FR --include=DATA.txt '2* x' main_directory > another_text_file
9
muru

ターゲットファイルの名前がわかっているので、次のこともできます。

grep '^2\* x' */DATA.txt > newfile

または、awkで:

awk '^/2\* x/' */DATA.txt > newfile

そしてPerl:

Perl -ne 'print if /2\* x/' */DATA.txt > newfile
5
terdon

一般的方法:

grep -r <pattern>

または

特定のアプローチ:

find -name <file patterns which you want to find> | xargs grep <pattern you looking for>
1
404pio