ファイル内のテキストを見つけて別のファイルにコピーするコマンドは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
sed
stdout
デフォルト出力は次のとおりです。ファイルに出力するには、演算子(新しいファイルを作成したい場合)を使用するか、ファイルに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