この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
して接続を実行します。put
col1が空でないことを確認してください。sort
IDでレコードを並べ替える