我的file1包含一些文本,例如:
abcdef 123456 abcdef
ghijkl 789123 abcdef
mnopqr 123456 abcdef
我有包含单行文本的file2,我想用它作为模式:
ghijkl 789123
如何使用第二个文件作为模式使用sed将包含它的行打印到第三个文件?像file3:
ghijkl 789123 abcdef
我试过用
sed -ne "s/r file2//p" file1 > file3
但是由于某种原因,file3的内容是空白的 附:使用Windows
答案 0 :(得分:2)
如果您有sed
,是否可以访问grep
?
grep -f file2 file1 > file3
答案 1 :(得分:0)
sed
解决方案是:
cat f2.txt | xargs -I {} sed -n "/{}/p" f1.txt > f3.txt
但是,正如@Cyrus正确指出的那样,grep
是此解决方案的正确工具,它更好:
grep -f f2.txt f1.txt > f3.txt
注意:使用这些功能强大的* nix工具,例如sed
,grep
,cat
,xargs
,bash
,在Microsoft Windows上等等可能令人沮丧。考虑一下Linux环境,相反 - 你可以节省很多时间来处理来自Cygwin等模拟器的细微路径和环境问题。
答案 2 :(得分:0)
这是linux上最简单的sed解决方案:sed -n /`<file2`/p file1 > file3
,但是windows不提供反引号。所以窗户的解决方法是:
set /p PATERN=<file2
sed -n /%PATERN%/p file1 > file3