我有一个档案。我必须在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条规则:
Start
和end
Link
和available
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
。
我该怎么做?
答案 0 :(得分:5)
只需使用不同的虚拟变量:
awk '/Start/ {f=1} /Link/ {g=1} /Test/ {h=1} !f && !g && h; /end/ {f=0} /available/ {g=0} /complete/ {h=0}'
答案 1 :(得分: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