1

我有一个文件。Linux我必须在AWK命令中一一应用多个正则表达式。这是我的示例文件:

Start connection Test from LAN end
Link are Test is complete available
Test    
Start connection from LAN 
Test is complete
end
Test1 is complete
Test2 is complete
Link are available
Link are Test is complete available
Test1

我想应用 3 条规则:

  1. 看不到Start和之间end
  2. 看不到Link和之间available
  3. Test

我已经使用了三个 AWK awk '/Start/ {f=1} !f; /end/ {f=0}'awk '/Link/ {f=1} !f; /available/ {f=0}'现在awk '/Test/{f=1}f;/complete/{f=0}' 我想将它们组合在一起AWK

我怎样才能做到这一点?

4

2 回答 2

5

只需使用不同的虚拟变量:

awk '/Start/ {f=1} /Link/ {g=1} /Test/ {h=1} !f && !g && h; /end/ {f=0} /available/ {g=0} /complete/ {h=0}'
于 2013-10-27T10:04:54.230 回答
1

这个单一的 awk 应该可以工作:

awk '{
   gsub(/Start.*end/, "");
   gsub(/Link.*available/, "");
   split($0, a, "\n");
   for (i=0; i<length(a); i++)
      if (index(a[i], "Test"))
         print a[i]
}' RS= file
于 2013-10-27T10:06:23.983 回答