![将行从一个文件重定向到另一个文件的命令是什么](https://linux22.com/image/166781/%E5%B0%86%E8%A1%8C%E4%BB%8E%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%E5%91%BD%E4%BB%A4%E6%98%AF%E4%BB%80%E4%B9%88.png)
我想在 Unix 中将包含“hello”的行从 file1 重定向到 file 2。这里使用的命令是什么?
答案1
您将需要该命令grep
。 ( man grep
)。
和文件重定向>
。 ( man bash
)
来自 grep 手册
.
.
.
SYNOPSIS
grep [OPTION...] PATTERNS [FILE...]
.
.
.
-F, --fixed-strings
Interpret PATTERNS as fixed strings, not regular expressions.
.
.
.
我建议更全面地阅读本手册。
答案2
这是 grep 的教科书用法,以至于它作为动词被称为“grepping”,而不是被称为“重定向”。
fgrep hello file.txt > file2.txt
fgrep
grep
是仅查找固定字符串的变体f
(而不是匹配常用表达,re
中grep
)。标准的等效项是grep -F
,尽管您会发现grep
像 Solaris/bin/grep
这样的古老实现尚不支持该-F
选项。
答案3
我得到了答案
sed -i -e '/hello/{ w file2.txt' -e 'd;}' file1.txt
(动作匹配行进入file2.txt
)
或者
grep "hello" file1.txt > file2.txt
(副本匹配行进入file2.txt
)