特定のディレクトリ (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>