我如何才能 grep 特定的列名并显示该列下方的值。
样本数据:
StandByFile StandByPg StandByLSN StandByRcvBufUsed
S0082160.LOG 621668 0x00000C85118BC72D 0%
我想在列0%
下显示StandByRcvBufUsed
。请注意,文件包含与上面显示的列不同的其他数据,这意味着文件中不同行上的列表不同。
谢谢
更新:
我的文件具有以下格式,因此列号不是固定的:
HADR Information:
Role State SyncMode HeartBeatsMissed LogGapRunAvg (bytes)
Standby Peer Async 0 365000
ConnectStatus ConnectTime Timeout
Connected Tue May 20 09:34:23 2014 (1400592863) 120
ReplayOnlyWindowStatus ReplayOnlyWindowStartTime MaintenanceTxCount
Inactive N/A 0
PrimaryFile PrimaryPg PrimaryLSN
S0082160.LOG 621668 0x00000C85118BC72D
StandByFile StandByPg StandByLSN StandByRcvBufUsed
S0082160.LOG 621668 0x00000C85118BC72D 0%
答案1
让我们查找包含的列号StandByRcvBufUsed
并存储它。然后跳到下一行并打印该列并最后退出:
$ awk 'f{print $f; exit} {for (i=1; i<=NF; i++) if ($i == "StandByRcvBufUsed") {f=i; next}}' file
0%