특정 값 이상을 포함하는 행 추출

특정 값 이상을 포함하는 행 추출

저는 다음과 같은 항목이 포함된 로그 파일로 작업하고 있습니다.

$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

Goro의 답변은 매우 좋습니다. 테스트 사이의 숫자가 ()공간을 채울 수 있는지 확인하기 위해

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

관련 정보