如何找到大于第4列的值并打印整行? 我的输出是存储箱的状态报告。 例如:
Source Destination State Lag Status
host1:SystemState backup1:/vol/xxxxx/xxxxxx Snapvaulted 11:24:21 Idle
host2:/vol/xxxxx/xxxxxx backup2:/vol/xxxxx/xxxxxx Snapvaulted 1898:58:16 Idle
host3:/vol/xxxxx/xxxxxx backup3:/vol/xxxxx/xxxxxx Snapvaulted 18:58:02 Idle
host4:/vol/xxxxx/xxxxxx backup4:/vol/xxxxx/xxxxxx Snapvaulted 19:46:24 Idle
host5:/vol/xxxxx/xxxxxxr backup5:/vol/xxxxx/xxxxxxr Snapvaulted 5009:22:26 Idle
我尝试过以下命令:
ssh backupFiler snapvault status | awk '{print $4}'| cut -d ':' -f 1 | awk '{ if ( $1 > 24 ) print $0 }'
ssh backupFiler snapvault status | awk '{ if ( $4 > 24 ) print $0 }'
我需要输出只显示Lag大于24小时的行。
答案 0 :(得分:7)
您可以这样做:
ssh backupFiler snapvault status | awk '$4+0 > 24'
向变量添加零是一个AWK惯用法,用于将其从字符串强制转换为数值。
host2:/vol/xxxxx/xxxxxx backup2:/vol/xxxxx/xxxxxx Snapvaulted 1898:58:16 Idle
host5:/vol/xxxxx/xxxxxxr backup5:/vol/xxxxx/xxxxxxr Snapvaulted 5009:22:26 Idle
答案 1 :(得分:1)
如何将ssh输出传递给:
awk -F':|\\s*' '$6>24'
使用您当前的示例,它输出:
host2:/vol/xxxxx/xxxxxx backup2:/vol/xxxxx/xxxxxx Snapvaulted 1898:58:16 Idle
host5:/vol/xxxxx/xxxxxxr backup5:/vol/xxxxx/xxxxxxr Snapvaulted 5009:22:26 Idle
答案 2 :(得分:0)
改为使用:
awk '{split($4,a,":");if(a[1])>24{print}}'
所以你的命令将是:
ssh backupFiler snapvault status | awk '{split($4,a,":");if(a[1])>24{print}}'
答案 3 :(得分:0)
如果您需要整行,您首先只选择了第一列awk
的第4列,
然后你需要以不同的方式过滤它,考虑一下:
ssh backupFiler snapvault status |perl -ne ' print if (m/\b(\d+):\d+:\d+\b/ and $1>24)'