下面的awk语法减少了文件中的行
来自具有端口XNT1的行。
直到命令结束行
# 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没有显示行!
# awk -v XNTF=XNT1 '/\/stats\/port XNTF\/if/,/END OF COMMAND/' /var/tmp/test当我设置外部变量时,请告诉我为什么awk不能工作?以及如何修复它?
发布于 2015-05-05 09:20:45
在//内部,变量不会展开。您必须使用~操作符来匹配组装的regex:
awk -v XNTF=XNT1 '$0 ~ "/stats/port " XNTF "/if",/END OF COMMAND/' /var/tmp/test通常,$0 ~ some_string将$0 (行)与解释为regex的some_string匹配。
发布于 2015-05-05 09:27:51
我通常试图避免使用awk ,中的range命令,因为它不太灵活。这应该可以做到:
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 COMMANDhttps://stackoverflow.com/questions/30048385
复制相似问题