提取包含特定值或更大值的行

提取包含特定值或更大值的行

我正在使用一个日志文件,其中包含如下所示的条目:

$Hostname1:  0x7FDBF4B1AB10 (  23698) waiting 100 seconds, NSDThread: for I/O completion on disk vd4
$Hostname2:  0x7F2D10A2F8C0 (  25393) waiting 200 seconds, NSDThread: for I/O completion on disk vd35
$Hostname3:  0x7F2D109F4290 (  25343) waiting 900 seconds, NSDThread: for I/O completion on disk vd11
$Hostname4:  0x7FDBF4B1AB30 (  23698) waiting 100 seconds, NSDThread: for I/O completion on disk vd40
$Hostname5:  0x7F2D10A2F830 (  25392) waiting 750 seconds, NSDThread: for I/O completion on disk vd13
$Hostname6:  0x7F2D109F4240 (  25342) waiting 500 seconds, NSDThread: for I/O completion on disk vd14

我想过滤等待时间大于任意值(假设 600 秒)的行。在 bash 中执行此操作的最佳方法是什么?

答案1

awk会让你得到你想要的。

awk '$6 > 600 { print }' file

$Hostname3:  0x7F2D109F4290 (  25343) waiting 900 seconds, NSDThread: for I/O completion on disk vd11
$Hostname5:  0x7F2D10A2F830 (  25392) waiting 750 seconds, NSDThread: for I/O completion on disk vd13

或者按照@Kusalananda,这一行就足够了

awk '$6 > 600 ' file 

答案2

五郎的回答很好。只是为了确保测试之间的数字()可以填充空间

awk -F '[ \t(]+' '$5 > 600' file

相关内容