将shell变量传递给awk的模式搜索

时间:2018-04-18 08:27:09

标签: awk gawk

在脚本中,我想搜索在使用其他命令收集的某些端口之间建立的连接,并在PORT变量和特定系统上进行设置。

使用-vp = $ {PORT}

将PORT变量传递给awk

但我不知道如何使用" p"它在模式的其余部分内。 他不行:

$ lsof -i -P|awk -vp=${PORT} '$(NF-1)~/vm7.+:'$p'->(vm9|vm11).+ESTABLISHED/{print $(NF-1)}'
$ lsof -i -P|awk -vp=${PORT} '$(NF-1)~/vm7.+:'p'->(vm9|vm11).+ESTABLISHED/{print $(NF-1)}'

2 个答案:

答案 0 :(得分:1)

尝试一下:

   **@page {
            margin-top:21% !important; 
            @top-left{
            content: element(header);

            }

            @bottom-left {
            content: element(footer
 }
 div.header {

            position: running(header);

            }
            div.footer {

            position: running(footer);
            border-bottom: 2px solid black;


            }
           .pagenumber:before {
            content: counter(page);
            }
            .pagecount:before {
            content: counter(pages);
            }      
 <div class="footer" style="font-size:12pt; font-family: Arial; font-family: Arial;">
                <span>Page <span class="pagenumber"/> of <span class="pagecount"/></span>
            </div >**
  • 使用awk -v p="$PORT" '{pat="yourHost(or whatever):"p}$(NF-1)~pat{print $(NF-1)}' 构建模式(pat)并检查字段p
  • 您不需要(不应该)使用(NF-1)模式,因为它是最后一个字段ESTABLISHED而不是NF

答案 1 :(得分:0)

使用match

$ awk -v p=$port 'match($(NF-1),"vm7.+:" p "->(vm9|vm11)"){print $(NF-1)}'

由于没有测试材料,可能会出现一些错误。已删除ESTABLISHED中的$NF,而不是$(NF-1)(至少在我的系统中)。

......或不要:

$ awk -v p=$port '$(NF-1) ~ "vm7.+:" p "->(vm9|vm11)" {print $(NF-1)}'

今天我学到了一些东西。