【问题标题】:sed + match the first word in line and the second word that begin with abcsed + 匹配行中的第一个单词和以 abc 开头的第二个单词
【发布时间】:2010-09-01 13:26:03
【问题描述】:

如何匹配以单词 ADDRESS 开头的所有行 第二个字符串以 abc 字符开头。

remark - (我需要在我的shell脚本中结合sed语法)

例如

 more file

 ADDRESS abc1a (match)
 ADDRESS abc1b (match)
 ADDRESS acb1a (will not match)
 ADRESS  abc   (will not match)
 ADDRESS abc2a (will match)
 ADDRES  abc1a (will not match)
 ADDRESS ab    (will not match)

【问题讨论】:

    标签: regex shell sed


    【解决方案1】:

    不是 sed 答案,但这是对您要求的清晰翻译:

    awk '$1 == "ADDRESS" && substr($2,0,3) == "abc"'
    

    【讨论】:

      【解决方案2】:

      为什么不直接做:

      grep '^ADDRESS abc' input_file
      

      【讨论】:

        【解决方案3】:
        sed -n '/^ADDRESS[ \t]*abc/p' file
        

        我建议您下次向我们展示您的代码,因为我相信您已经非常熟悉 ksh/sed/awk 等。

        【讨论】:

        • sed -n '/[ \t]*ADDRESS[ \t]*abc/p' 文件(如果我在行首到地址之间的行中有空格,我会更正此问题)
        • 你可能想要\+ 而不是* 的空间模式,以确保至少有一个
        猜你喜欢
        • 1970-01-01
        • 2011-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-20
        • 2014-10-24
        • 1970-01-01
        相关资源
        最近更新 更多