gpt4 book ai didi

awk - grep 匹配模式后的下一个单词,直到第一个空格

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:16 24 4
gpt4 key购买 nike

我正在尝试获取“MODULE”之后的单词,其中,

  1. MODULE与“待匹配词”之间可以有一个或多个空格。

  2. “待匹配词”和它的下一个词之间的单个空格

  3. 待匹配词可以是任何模式

    HAL_POINT ITERATION IMPLEMENTED VERSION MODULE  1.2.3/4 OLKI 9FEB17 3MAR2018 
    3.2.6
    CHK_PONT VALUES IMPLEMENTED VERSION MODULE 350/4 OLKI 9FEB17 3APR2018
    3.2.6
    HAL_POINT ITERATION JIO_PO POINT MODULE RT/6T OLKI 9FEB17 3MAR2018
    3

我试过了

echo $variable | grep -oP '(?<=MODULE\s)\d.\d.\d\/\d'

echo $variable | grep -oP '(?<=MODULE\s\s)\d.\d.\d\/\d' 

对于第一行,但我希望它更优雅和通用。

要匹配的词是 1.2.3/4350/4RT/6T

最佳答案

如果您非常确定单词是否由空格分隔,则可以使用 awk,因为默认情况下 awk 在输入行中用白色分隔字段 -空格字符。对于给定的输入,您只需要

awk '{ for( i=1; i<=NF ;i++ ) if ( $i == "MODULE" ) { print $(i+1); break } }' 

for 循环一直运行到 NF,这基本上意味着运行到当前行中被空白字符分隔的最后一行条目。

如果您仍然坚持使用 grep,您可以通过以下操作改进正则表达式。在 PCRE 中,您可以使用 ? 通过执行 (\s+)? 来匹配可变数量的空白字符,并且只获取没有空白的部分。

grep -oP '(?<=MODULE)(\s+)?\K([^ ]*)'

参见 Regular Expression from regex101为您给定的输入工作。

关于awk - grep 匹配模式后的下一个单词,直到第一个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55027495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com