如何从文件中提取单词并将其存储到另一个现有文件中?
我试过的是
cat q1.txt | grep -i "osx" test.txt
Run Code Online (Sandbox Code Playgroud)
我想从 test.txt 中提取它并将其存储到 q1 中,但是这种方法和其他方法都不起作用
Kus*_*nda 10
您可以cat完全删除,然后您应该将输出重定向grep到结果文件:
grep -i "osx" test.txt >q1.txt
Run Code Online (Sandbox Code Playgroud)
这将搜索test.txt包含字符串的行osx(不区分大小写),并将这些行存储在q1.txt. 如果文件q1.txt存在,它将在输出存储在其中之前被截断(清空)。
如果您希望在文件末尾附加输出,请使用>>而不是>作为重定向运算符。
你的命令:
cat q1.txt | grep -i "osx" test.txt
Run Code Online (Sandbox Code Playgroud)
这是什么实际上做的是启动cat并grep兼任。 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
Run Code Online (Sandbox Code Playgroud)
但即使只是
cat test.txt | grep -i "osx" >q1.txt
Run Code Online (Sandbox Code Playgroud)
没用,因为grep它完全能够自己从文件中读取(如上所示)。即使是不能够打开test.txt其本身而言,一个可以写
grep -i "osx" <test.txt >q1.txt
Run Code Online (Sandbox Code Playgroud)
说标准输入应该来自test.txt文件,标准输出应该去q1.txt文件
cat仅在连接数据时使用(这是它的主要用途)。也有一些其他用途cat,但这超出了这个问题的范围。
有关的: