AWK/文字列操作: 列から文字列を抽出し、行を印刷する前に数値と比較する方法

AWK/文字列操作: 列から文字列を抽出し、行を印刷する前に数値と比較する方法

テーブルにデータのリストがあります。 awkを使用して5列を抽出することで、行間のデータを区別することができました。もしそうなら。entry at column 5more than 4row should be printed

ただし、1つの項目は、印刷するかどうかを決定する前に数値と直接比較できない文字列形式で提供されます。項目には、比較する数字の周りに角かっこがあります。

以下は列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

関連情報