테이블에 데이터 목록이 있습니다. awk를 사용하여 5열을 추출함으로써 행 간의 데이터를 구별할 수 있었습니다. 그렇다면 entry at column 5
.more than 4
row should be printed
그러나 하나의 항목은 인쇄 여부를 결정하기 전에 숫자와 직접 비교할 수 없는 문자열 형식으로 제공됩니다. 항목에는 비교할 숫자 주위에 대괄호가 있습니다.
다음은 열 5의 예입니다.
on
%)
%
replica
(
0
(100.0 <= this one
0.0
10.8
13.8
12.0
16.3
13.2
12.1
11.4
10.4
0.0
devices:
위의 예에서 테이블의 8행과 10행부터 17행까지 인쇄해야 합니다.
샘플 테이블(file.txt)을 제공하겠습니다.
1 0 0 0 on
2 0 0 0 %)
3 0 0 0 %
4 0 0 0 replica
5 0 0 0 (
6 0 0 0
7 0 0 0 0
8 0 0 0 (100.0
9 0 0 0 0.0
1 0 0 0 10.8
1 1 0 0 13.8
1 2 0 0 12.0
1 3 0 0 16.3
1 4 0 0 13.2
1 5 0 0 12.1
1 6 0 0 11.4
1 7 0 0 10.4
1 8 0 0 0.0
1 9 0 0 devices:
내 시도:
awk '{if (($5>=4)) print;
else
NUMBER=($5 | grep -o -E '[0-9]+');
if (($NUMBER>=4)) print' file.txt
실수:
awk: syntax error near line 2
awk: illegal statement near line 2
awk: syntax error near line 3
awk: illegal statement near line 3
답변1
다음을 비교하기 전에 숫자가 아닌 문자를 제거할 수 있습니다.
$ awk '{x=$5; gsub(/[^0-9.]/,"",x);} x+0>=4' file.txt
8 0 0 0 (100.0
1 0 0 0 10.8
1 1 0 0 13.8
1 2 0 0 12.0
1 3 0 0 16.3
1 4 0 0 13.2
1 5 0 0 12.1
1 6 0 0 11.4
1 7 0 0 10.4