Linuxでファイル内のテキストを検索し、見つかった場合は別のファイルにコピーするコマンドはありますか?
sed -i
を使用してテキストを見つけることができますが、行全体を別のファイルにコピーする方法は?
sed -i
は使用しないでください。元のファイルが上書きされます。
代わりにgrepを使用してください。
grep "text to find" input.txt > output.txt
デフォルトでは、sed
はstdout
に出力します。ファイルに出力するには、sed
のstdout
を>
演算子(新しいファイルを作成する場合)または>>
演算子(出力を既存のファイルに追加する場合):
sed '/text/' inputfile > outputfile
sed '/text/' inputfile >> outputfile
Grepを使用できます。 source_fileファイルを検索したいとします。検索したい行がある2番目のファイルはinput_fileです。使用する
grep -f input_file source_file > output_file
あなたのsource_fileが
Humpty Dumpty sat on a wall
Humpty Dumpty had a great fall
All the King's horses and
All the Queen's men
COuld not put Humpty together again
そして入力ファイルは
Humpty
Queen
あなたの出力ファイルは
Humpty Dumpty sat on a wall
Humpty Dumpty had a great fall
All the Queen's men
COuld not put Humpty together again
sed -i
はインプレース編集用です。
man sed
から
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
sed
は良い選択ですが、awk
を使用することもできます
awk '/<your_pattern>/' foo > bar
例
$ cat foo
foo bar foobar
bar foo bar
bar foo
$ awk '/foobar/' foo > bar
$ cat bar
foo bar foobar