AWK/문자열 작업: 열에서 문자열을 추출하고 행을 인쇄하기 전에 숫자와 비교하는 방법

AWK/문자열 작업: 열에서 문자열을 추출하고 행을 인쇄하기 전에 숫자와 비교하는 방법

테이블에 데이터 목록이 있습니다. awk를 사용하여 5열을 추출함으로써 행 간의 데이터를 구별할 수 있었습니다. 그렇다면 entry at column 5.more than 4row 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

관련 정보