UNIX シェルを使用した vlookup

UNIX シェルを使用した vlookup

このCSVファイルがあります

ID,col1,col2,col3
1,,,FALSE
2,,,FALSE
3,,,FALSE
4,,,FALSE

ID列を使用して他のCSVファイルと結合したいと思います。

ID,col1
2,AA
3,BB

インポート(実際の出力は別のCSVでなければなりません。ここでより読みやすくするためのきれいなプリントがあります)

+----+------+------+-------+
| ID | col1 | col2 | col3  |
+----+------+------+-------+
| 1  | -    | -    | FALSE |
| 2  | AA   | -    | FALSE |
| 3  | BB   | -    | FALSE |
| 4  | -    | -    | FALSE |
+----+------+------+-------+

最後col1に空でない場合は空でcol3なければなりません。TRUE

+----+------+------+-------+
| ID | col1 | col2 | col3  |
+----+------+------+-------+
| 1  | -    | -    | FALSE |
| 2  | AA   | -    | TRUE  |
| 3  | BB   | -    | TRUE  |
| 4  | -    | -    | FALSE |
+----+------+------+-------+

一部のLinuxコマンドラインユーティリティまたはbashスクリプトを使用してこれを行うにはどうすればよいですか?

ベストアンサー1

ミラーを使用できます(https://github.com/johnkerl/miller)。走る

mlr --csv join --ul -j ID -f input01.csv then put -S '!is_empty($col1) { $col3 = "TRUE" }' then sort -n ID input02.csv >output.csv

あなたはやる

+----+------+------+-------+
| ID | col1 | col2 | col3  |
+----+------+------+-------+
| 1  | -    | -    | FALSE |
| 2  | AA   | -    | TRUE  |
| 3  | BB   | -    | TRUE  |
| 4  | -    | -    | FALSE |
+----+------+------+-------+

いくつかの注意:

  • joinフィールドを使用IDして接続を実行します。
  • putcol1が空でないことを確認してください。
  • sortIDでレコードを並べ替える

おすすめ記事