複数のデータファイルの特定の行を選択する方法

複数のデータファイルの特定の行を選択する方法

次のファイルがたくさんあります。

ファイル1:

 408.60 0.0847 
 370.03 0.1571 
 307.49 0.1492 
 297.12 0.0708 
 274.36 0.1989 
 251.27 0.1640 

ファイル2:

 391.06 0.0589 
 368.55 0.2293 
 313.87 0.0369 
 299.94 0.1432 
 288.61 0.2125 
 252.57 0.1238 

ファイル3:

 395.74 0.2439 
 372.76 0.0658 
 323.80 0.0026 
 287.41 0.3337 
 268.44 0.0860 
 259.44 0.0680 

選択基準に基づいて各入力ファイルの特定の行を選択したいと思います。選択基準は次のとおりです。

a)最初の列は290.00より大きい数字でなければなりません。

b)2番目の列は最大数でなければなりません。

c)この行を印刷してください

出力は次のようになります。

370.03 0.1571
368.55 0.2293
395.74 0.2439

ベストアンサー1

直接解決

for file in file{1..3}; do
    sort -rk2 "$file" | awk '$1 > 290{print;exit}'
done

またはawkを使用しないでください

for file in file{1..3}; do
    while read field1 field2 ; do
        [ "field1" -gt 290 ] && { echo $field1 $field2; break; }
    done <(sort -rk2 "$file")
done

それとも一人ぼっち

awk '
    FNR == 1 || $1 > 290 && max < $2 {
        max = $2
        if (FNR == 1 && max) {
            print line
            if ($1 <= 290)
                max = -1     }
        line= $0                     }
    END {
        print line }
    ' file{1..3}

おすすめ記事