首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >awk +在awk中设置外部var

awk +在awk中设置外部var
EN

Stack Overflow用户
提问于 2015-05-05 08:56:19
回答 2查看 114关注 0票数 0

下面的awk语法减少了文件中的行

来自具有端口XNT1的行。

直到命令结束

代码语言:javascript
复制
 #  awk '/\/stats\/port XNT1\/if/,/END OF COMMAND/' /var/tmp/test 

  >> SW_02_03 - Main# /stats/port XNT1/if
  ------------------------------------------------------------------
  Interface statistics for port XNT1:
  IBP/CBP Discards:                  0
  L3 Discards:                       0


  >> SW_02_03 - Port Statistics# END OF COMMAND
  # 
  # 
  # 

现在我在awk命令中将外部变量设置为XNTF=XNT1。

但出于某种原因,XNTF在awk中没有得到"XNT1“值,而且awk没有显示行!

代码语言:javascript
复制
  #  awk -v XNTF=XNT1 '/\/stats\/port XNTF\/if/,/END OF COMMAND/' /var/tmp/test

当我设置外部变量时,请告诉我为什么awk不能工作?以及如何修复它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-05 09:20:45

//内部,变量不会展开。您必须使用~操作符来匹配组装的regex:

代码语言:javascript
复制
awk -v XNTF=XNT1 '$0 ~ "/stats/port " XNTF "/if",/END OF COMMAND/' /var/tmp/test

通常,$0 ~ some_string$0 (行)与解释为regex的some_string匹配。

票数 1
EN

Stack Overflow用户

发布于 2015-05-05 09:27:51

我通常试图避免使用awk ,中的range命令,因为它不太灵活。这应该可以做到:

代码语言:javascript
复制
awk -v XNTF=XNT1 '$0~"/stats/port " XNTF "/if" {f=1} f; /END OF COMMAND/ {f=0}' file
 >> SW_02_03 - Main# /stats/port XNT1/if
  ------------------------------------------------------------------
  Interface statistics for port XNT1:
  IBP/CBP Discards:                  0
  L3 Discards:                       0


  >> SW_02_03 - Port Statistics# END OF COMMAND
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30048385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档