Awk 了解模式匹配后打印多行的语法
要使用awk按照图案打印多(2)行,请执行以下操作: 我在某处找到了以下解决方案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 '/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不,两个区块相互独立。我在寻找这种流动我在寻找这种流动