csv ファイルの一致するセルと行のインデックスを Grep します。

csv ファイルの一致するセルと行のインデックスを Grep します。

0.99私はcsvファイルを持っており、行インデックス、つまり行の最初のセルで始まる数字を見たいと思います。

これが私が今まで持っているものです:

cat fil.csv | grep '0\\.99'| tee > (cut -d, -f1) | tr , \\n |  grep '0\\.99'

入力する:

id, f1,f2,f3
f1,0.54,0.12,0.432
f2,0.1231,0.99999,0.99832
f3,0.121,nan,0.12321
f4,0.99712,0.121,0.434

希望の出力:理想的にはこれが良いでしょうが、オネライナには複雑すぎます。

f2,0.99999,0.99832
f4,0.99712

この問題を解決できます。これが私が書いたコマンドで欲しいものです。

f2
0.99999
0.99832
f4
0.99712

ベストアンサー1

awkを使用してください:

$ awk -F, '$0~"0\\.99*"{printf $1;for(i=1;i<=NF;i++){if($i~"0\\.99*"){printf ","$i}};printf "\n"}'
f2,0.99999,0.99832
f4,0.99712

より読みやすい形で:

$ awk -F, '
      $0~"0\\.99*"{
          printf $1
          for(i=1; i<=NF; i++){
              if($i~"0\\.99*"){
                  printf ","$i
              }
          }
          printf "\n"
      }
  '

おすすめ記事