열 6 또는 7이 90%보다 큰 경우 일치하는 행을 인쇄합니다.

열 6 또는 7이 90%보다 큰 경우 일치하는 행을 인쇄합니다.

아래와 같이 텍스트 파일에 데이터가 있습니다.

server         volume               available total   used  percent-used percent-vol-space
--------------- -------------------- --------- ------- ----- ------------ ----------------------
TEMPSERVER      TEMP_root       972.4MB     972.8MB 388KB 5%           5%
TEMPSERVER      TEMPVOL01           2.59TB      5.13TB  2.55TB 54%         10%
TEMPSERVER      TEMPVOL02           2.26TB      4.10TB  1.53TB 50%         10%
TEMPSERVER      TEMPVOL02_Clone     2.26TB      4.10TB 1.57TB 50% 10%
TEMPSERVER      TEMPVOL03           1.79TB      3.88TB  2.10TB 63%         20%
TEMPSERVER      TEMPVOL03_Clone     2.26TB      4.10TB 1.79TB 50% 10%
TEMPSERVER      TEMPVOL04           3.32TB      4.30TB  807.3GB 30%        10%
22 entries were displayed.

이제 열 6 또는 7의 값이 90%보다 큰 경우 모든 행을 인쇄하고 싶습니다. 어떻게 해야 하나요?

답변1

awk 'NR > 2 && (0+$6 > 90 || 0+$7 > 90)' <file

이는 데이터를 한 줄씩 읽고 한 줄의 필드 6 또는 7에 있는 숫자가 90보다 클 때마다 인쇄합니다. 처음 두 헤더 행을 건너뛰고 NR > 26열과 7열의 값에 0을 추가하여 %90에 대해 테스트하기 전에 강제로 숫자로 변환합니다(따라서 데이터의 부호가 제거됨).

답변2

perl -lane 'print if $. <= 2 || grep { $_ > 90. } @F[5,6]' input-data.file

행은 공백으로 구분되며 필드는 @F0부터 시작하는 인덱스 배열에 저장됩니다. 헤더(라인 1,2)는 무조건 인쇄되며 나머지는 필드 6 및/또는 7(최소 90% 사용 포함)을 찾는 필터를 기반으로 선택됩니다.

관련 정보