【问题标题】:awk - regex to print first matching groupawk - 正则表达式打印第一个匹配组
【发布时间】:2022-10-17 17:54:28
【问题描述】:

我正在尝试基于正则表达式获取第一个匹配组,但在第二个 awk 命令之后它没有打印任何内容。不知道我做错了什么。任何帮助是极大的赞赏。

git status | awk 'NR=1' --> Limiting this t0 print the first line.
On branch TA1692959
git status | awk 'NR=1' | awk '/^On\sbranch\s([\w]*)/{ print $1 }' --> I was trying to get the first word "TA1692959" after "On branch"this prints nothing.

【问题讨论】:

    标签: awk ksh


    【解决方案1】:
    git status |
    
    {n,m,g}awk 'NR<--NF' FS='^On branch |[^[:alnum:]_].+$' OFS=
    
    TA1241521
    

    【讨论】:

      【解决方案2】:

      如果您发现自己通过多个awk 调用传递数据,那么很有可能您可以通过单个awk 调用来做同样的事情,例如:

      git status | awk 'NR==1 && /^On branch / {print $3; exit}'
      TA1692959
      

      在这种情况下:

      • 不需要正则表达式;否则 OP 应该使用显示需要正则表达式的其他示例来更新问题
      • exit 是可选的,仅允许awk 跳过处理输入流的其余部分

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-29
        • 2011-07-24
        • 2015-02-24
        • 2023-03-19
        • 2014-09-15
        • 1970-01-01
        • 1970-01-01
        • 2022-11-02
        相关资源
        最近更新 更多