如何从文件中 grep 一个单词并将其存储到另一个现有文件中?

如何从文件中 grep 一个单词并将其存储到另一个现有文件中?

如何从文件中 grep 一个单词并将其存储到另一个现有文件中?

我尝试过的是

cat q1.txt | grep -i "osx" test.txt

我想从 test.txt 中 grep 它并将其存储到 q1 中,但是这种方法和其他方法都行不通

答案1

您可以完全删除cat,然后您应该将输出重定向grep到结果文件:

grep -i "osx" test.txt >q1.txt

这将搜索包含test.txt字符串的行osx(不区分大小写),并将这些行存储在 中q1.txt。如果文件q1.txt存在,则在将输出存储在其中之前,它将被截断(清空)。

如果您希望将输出附加到文件末尾,请使用>>而不是>作为重定向运算符。


您的命令:

cat q1.txt | grep -i "osx" test.txt

这实际上所做的是启动catgrep并发。 cat将读取q1.txt并尝试将其写入其标准输出,该输出连接到 的标准输入grep

但是,由于您提供了grep一个要读取的文件,因此它将完全忽略cat发送给它的任何内容。

最后,test.txt包含该字符串的所有行都osx将输出到终端。


有一些东西通常被称为“无用的使用cat”(或有时是“UUoC”),这意味着cat调用可能会被完全删除,并且文件可能会被另一个工具直接读取。

极端的例子是:

cat test.txt | cat | cat | cat | grep -i "osx" | cat | cat >q1.txt

但即使只是

cat test.txt | grep -i "osx" >q1.txt

没有用,因为grep它完全能够自行读取文件(如上所示)。即使它不是能够test.txt自行打开,可以写

grep -i "osx" <test.txt >q1.txt

说标准输入应该来自文件test.txt,标准输出应该转到q1.txt文件

仅在连接数据时使用cat(这就是它的主要用途)。还有一些其他用途cat,但它超出了这个问题的范围。


有关的:

答案2

用于在文件中搜索并将结果写入“path/storage_file”:

grep -in pattern file > path/storage_file

要在文件中搜索并将结果附加(使用>>)到“path/storage_file”中:

grep -in pattern file >> path/storage_file

要在整个目录中搜索并将结果写入“path/storage_file”:

grep -in pattern * > path/storage_file

要在整个目录中搜索并将结果附加(使用 >>)到“path/storage_file”中:

grep -in pattern * >> path/storage_file

相关内容