查找文件中的文本并将其复制到另一个文件

查找文件中的文本并将其复制到另一个文件

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

相关内容