sed/awk/grep删除文本文件中除匹配模式之外的所有内容

sed/awk/grep删除文本文件中除匹配模式之外的所有内容,sed,awk,command,terminal,grep,Sed,Awk,Command,Terminal,Grep,嗨,我有一个文件let pattern.txt 包含 模式1 模式2 模式3 模式4 另一个文本文件let(complex.txt) 包含行作为 路径:XXXXXXXXXXXXXXXXXXXXXX(XXXXXXXXX,'pattern1/2/3/4')XXXXXXXXXXXXXX 路径:XXXXXXXXXXXXXXXXXXXXXX(XXXXXXXXX,'pattern1/2/3/4')XXXXXXXXXXXXXX 路径:XXXXXXXXXXXXXXXXXXXXXX(XXXXXXXXX,'patt

嗨,我有一个文件let pattern.txt

包含

模式1

模式2

模式3

模式4

另一个文本文件let(complex.txt)

包含行作为

路径:XXXXXXXXXXXXXXXXXXXXXX(XXXXXXXXX,'pattern1/2/3/4')XXXXXXXXXXXXXX

路径:XXXXXXXXXXXXXXXXXXXXXX(XXXXXXXXX,'pattern1/2/3/4')XXXXXXXXXXXXXX

路径:XXXXXXXXXXXXXXXXXXXXXX(XXXXXXXXX,'pattern1/2/3/4')XXXXXXXXXX

现在的问题是:::我必须通过将pattern.txt与complex.txt匹配来获得另一个文件filter.txt,其中将包含一行

路径:模式1/2/3/4

我试过了…但是我没有得到

有人能帮忙吗?…谢谢你的帮助。

pattern.txt包含哪种类型的正则表达式(Basic、extended、perl?)

如果扩展,只需使用awk:

awk '
    FNR==NR{
        patterns[$0]++; 
        next;
    } 
    {
        for (el in patterns) 
            if (match($0,el)) {
                print $1 substr($0,RSTART,RLENGTH); 
                next;
            } 
    }' pattern.txt complex.txt >filter.txt
上面的代码依赖于complex.txt中“path:”和行的其余部分之间的空格