我的文字文件包含开始' - 主机' 和结束&#39 ;;' ,这个模式在文件中出现的次数如下:
- 主持人(第一)Sid(queen1)
- 王子公主#/ king 1/1
- 主持人(第一)Sid(queen2)
- 王子公主#/ king 2/2
- 主持人(第一)Sid(queen3)
- dir princess#/ king 3/3
我想要的结果如下:
queen1 1/1
queen2 2/2
queen3 3/3
使用 AWK ,我想我可以像下面那样指定包含此模式的块。但是,我将第二个模式置于模式中时出错。
你能帮我完成这个要求吗?谢谢!
BEGIN {
}
/-- Host/,/;/ { /prince/ { print $3 } }
END
答案 0 :(得分:1)
$ awk -F'[ ()]+' '/-- Host/,/;/ { if (/-- Host/) printf "%s ",$5; else if (/prince/) print $4;}' file
queen1 1/1
queen2 2/2
queen3 3/3
-F'[ ()]+'
这告诉awk使用任意数量的空白和parens的任意组合作为字段分隔符。
/-- Host/,/;/
这仅选择以-- Host
开头并以;
结尾的行组。大括号后面的命令仅对这些组中的行执行。
{ if (/-- Host/) printf "%s ",$5; else if (/prince/) print $4;}
如果该行包含-- Host
,则我们打印其第五个字段。否则,如果它包含prince
,我们将打印其第四个字段。