複数のディレクトリにあるテキストファイルに対する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>

関連情報