Awk 了解模式匹配后打印多行的语法

Awk 了解模式匹配后打印多行的语法,awk,Awk,要使用awk按照图案打印多(2)行,请执行以下操作: 我在某处找到了以下解决方案 $ awk '/Linux/{x=NR+2}(NR<=x){print}' file Linux Solaris Aix 我们找到了 pattern = /Linux/ action = {x=NR+2} 那么什么是(NR您的脚本有两个块 $ awk '/Linux/ {x=NR+2} NR<=x {print}' file $awk'/Linux/{x=NR+2} NR您的脚本

要使用awk按照图案打印多(2)行,请执行以下操作:

我在某处找到了以下解决方案

$ awk '/Linux/{x=NR+2}(NR<=x){print}' file
Linux
Solaris
Aix
我们找到了

pattern = /Linux/
action = {x=NR+2}

那么什么是
(NR您的脚本有两个块

$ awk '/Linux/ {x=NR+2}
       NR<=x   {print}' file
$awk'/Linux/{x=NR+2}

NR您的脚本有两个块

$ awk '/Linux/ {x=NR+2}
       NR<=x   {print}' file
$awk'/Linux/{x=NR+2}

NRFWIW我不会写你问的代码,而是写:

awk '/Linux/{c=3} c&&c--' file
参见第页的示例“g”

话虽如此,您的类C语法的原始代码是:

NR=0
x=0
While read (file,line)
{
  NR++
  if (line ~ "Linux") {
    x = NR+2
  }
  if (NR <= x) {
    print
  }
}
不。或者可能,取决于您认为“模式”的含义!尽管许多书籍、教程等都这么说,为了消除任何歧义,您只需将awk语法想象为:

awk 'condition{action}' file
其中,
条件
可以是:

  • 开始
    结束
  • var<7
    NF
    1
  • 类似于
    $0~“foo”
    $0~/foo/
    /foo/
    $0~var
    匹配($0,/foo/)
  • 字符串比较,如
    $0==“foo”
    索引($0,“foo”)
  • 在这种情况下,如果存在关联的动作块,则假定为
    true

  • 可能还有其他我忘了列出的东西。

    FWIW我不会写你问的代码,而是写:

    awk '/Linux/{c=3} c&&c--' file
    
    参见第页的示例“g”

    话虽如此,您的类C语法的原始代码是:

    NR=0
    x=0
    While read (file,line)
    {
      NR++
      if (line ~ "Linux") {
        x = NR+2
      }
      if (NR <= x) {
        print
      }
    }
    
    不。或者可能,取决于您认为“模式”的含义!尽管许多书籍、教程等都这么说,为了消除任何歧义,您只需将awk语法想象为:

    awk 'condition{action}' file
    
    其中,
    条件
    可以是:

  • 开始
    结束
  • var<7
    NF
    1
  • 类似于
    $0~“foo”
    $0~/foo/
    /foo/
    $0~var
    匹配($0,/foo/)
  • 字符串比较,如
    $0==“foo”
    索引($0,“foo”)
  • 在这种情况下,如果存在关联的动作块,则假定为
    true

  • 可能还有其他我忘了列出的东西。

    我假设您可以将语法简化为以下内容:
    awk'/Linux/{x=NR+2}NR将解释内置变量,如
    NR
    ,等等。祝您好运。我的意思是,通常我发现
    awk'/Linux/{x=NR+2;NR我试图理解事物是如何流动的。首先它找到模式匹配并存储在$0中,然后它如何在没有任何
    for循环的情况下进一步循环here@EdMorton对于我的问题,你能解释一下类似c的语法吗?我在读(文件,行){if(line~'/Linux/')然后{x=NR+2;print}时理解的是
    我不明白如何(NRI假设您可以将语法简化为以下内容:
    awk'/Linux/{x=NR+2}NR将解释内置变量,如
    NR
    等。祝您好运。我的意思是,通常我发现
    awk'/Linux/{x=NR+2;NR我试图理解事物是如何流动的。首先它找到模式匹配并存储在$0中,然后它如何在没有任何
    for循环的情况下进一步循环here@EdMorton对于我的问题,你能解释一下类似c的语法吗?我在读(文件,行){if(line~'/Linux/')然后{x=NR+2;print}时理解的是
    我不明白如何(但是第二个块需要在{}(大括号)内)。我的意思是通常我发现
    awk'/linux/{x=NR+2;NR不,两个块彼此独立。但是第二个块需要在{}(大括号)内。我的意思是通常我发现
    awk'/linux/{x=NR+2;NR不,两个区块相互独立。我在寻找这种流动我在寻找这种流动