ファイル内のテキストを見つけて別のファイルにコピーする

ファイル内のテキストを見つけて別のファイルにコピーする

ファイル内のテキストを見つけて別のファイルにコピーするコマンドはLinuxにありますか?

を使用してsed -iテキストを見つけることができますが、行全体を別のファイルにコピーする方法は?

答え1

使用しないでくださいsed -i。元のファイルが上書きされます。

代わりにgrepを使用してください。

grep "text to find" input.txt > output.txt

答え2

質問について私が理解したところによれば、オペレータは全文行を見つけるのではなく、テキストを見つけて別のファイルに入れたいと思っています。

を使用しますgrep -o 'pattern' input_file > output_file

バナー-o:

-o, --only-matching
       Print  only  the  matched  (non-empty) parts of a matching line, 
       with each such part on a separateoutput line.

例:

$ cat tmp
01/21/21 - foo
01/22/21 - bar
01/23/21 - foo
01/24/21 - bar

$ grep -o 'foo' tmp > foo

$ cat foo
foo
foo

答え3

sedstdoutデフォルト出力は次のとおりです。ファイルに出力するには、演算子(新しいファイルを作成したい場合)を使用するか、ファイルにsedリダイレクト演算子(出力を既存のファイルに追加する場合)を使用しますstdout>>>

sed '/text/' inputfile > outputfile
sed '/text/' inputfile >> outputfile

答え4

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

関連情報