模式将作为另一个文件中的列出现。文件_1.txt
pattern1 pattern2
pattern3 pattern4
pattern5 pattern6
cat 主文件.txt
mine line as pattern1 and pattern2
mine line2 as pattern5 and pattern6
other then that nothing should dispaly
unwanted line
最终输出文件.txt
mine line as pattern1 and pattern2
mine line2 as pattern5 and pattern6
如果两种模式都存在,则仅显示该行,问题是模式存在于 file_1.txt 的列中
答案1
这近乎显而易见
sed -s 's:\([^ ]*\)[ ]*\([^ ]*\):/\1.*\2/p:' file_1.txt | sed -f - -n Mainfile.txt
在哪里
sed -s 's:\([^ ]*\)[ ]*\([^ ]*\):/\1.*\2/p:' file_1.txt
将给出 sed 命令列表
/pattern1.*pattern2/p
/pattern3.*pattern4/p
/pattern5.*pattern6/p
sed -f - -n Mainfile.txt
在哪里
-f -
将使用以前的文件(从|
到-
)作为命令文件,-n
不打印行(除非匹配)