Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 具有awk的多个正则表达式_Regex_Linux_Awk - Fatal编程技术网

Regex 具有awk的多个正则表达式

Regex 具有awk的多个正则表达式,regex,linux,awk,Regex,Linux,Awk,我有一份档案。我必须使用AWK命令在Linux中逐个应用多个正则表达式。 以下是我的示例文件: 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 co

我有一份档案。我必须使用
AWK
命令在
Linux
中逐个应用多个正则表达式。 以下是我的示例文件:

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条规则:

  • 开始
    结束
  • 不要在
    链接
    可用之间查看
  • 请参见
    Test
  • 我用了三个AWK
    awk'/Start/{f=1}!f/结束/{f=0}'
    awk'/Link/{f=1}!f/可用/{f=0}'
    awk'/Test/{f=1}f/完成/{f=0}'
    现在,我想将所有内容合并到一个
    AWK


    我如何才能做到这一点?

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

    awk '/Start/ {f=1} /Link/ {g=1} /Test/ {h=1} !f && !g && h; /end/ {f=0} /available/ {g=0} /complete/ {h=0}'
    

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

    awk '/Start/ {f=1} /Link/ {g=1} /Test/ {h=1} !f && !g && h; /end/ {f=0} /available/ {g=0} /complete/ {h=0}'
    

    这个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
    
    awk'{
    gsub(/Start.*end/,“”);
    gsub(/Link.*可用/,“”);
    拆分($0,a,“\n”);
    
    对于(i=0;i此单个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
    
    awk'{
    gsub(/Start.*end/,“”);
    gsub(/Link.*可用/,“”);
    拆分($0,a,“\n”);
    对于(i=0;i