【问题标题】:sed /awk/grep to delete every thing except matching pattern in a text filesed /awk/grep 删除文本文件中匹配模式以外的所有内容
【发布时间】:2011-06-05 03:42:45
【问题描述】:

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

包含

模式1

模式2

模式3

模式4

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

包含行为

路径:XXXXXXXXXXXXXXXXXXXXXXXXXX(XXXXXXXXX,'pattern1/2/3/4')XXXXXXXXXXXX

路径:XXXXXXXXXXXXXXXXXXXXXXXXXX(XXXXXXXXX,'pattern1/2/3/4')XXXXXXXXXXXX

路径:XXXXXXXXXXXXXXXXXXXXXXXXXXX(XXXXXXXXX,'pattern1/2/3/4')XXXXXXXXXXXX

现在问题是 :::我必须通过将 pattern.txt 匹配到 complex.txt 来获取另一个文件 filter.txt,该文件将包含一行作为

路径:pattern1/2/3/4.....

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

有人可以帮忙....谢谢您的建议...

【问题讨论】:

    标签: sed awk command terminal grep


    【解决方案1】:

    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
    

    上面的代码依赖于“path:”和 complex.txt 中的其余行之间的空格。

    【讨论】:

      猜你喜欢
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多