โดยใช้ มิลเลอร์ให้ถือว่าอินพุตเป็นคู่คีย์-ค่าคั่นด้วย TAB เป็นตัวคั่นช่องอินพุต และขีดล่างเป็นตัวคั่นคู่อินพุต และตั้งค่าเอาต์พุตเป็น TSV จากนั้นคุณสามารถ ไม่กระจาย ข้อมูลของคุณ
$ mlr --idkvp --ifs แท็บ --ips '_' --otsv unsparsify file.txt
1 00A98 00554 CCUG38
ก1 01563 01552 01373
ก2 01444
ก3 04566 05322
จากนั้นคุณสามารถเพิ่มการแปลงต่างๆ เช่น
$ mlr --idkvp --ifs tab --ips '_' --otsv unsparsify --fill-with 0 แล้วใส่ '
สำหรับ(k,v ในแผนที่ยกเว้น($*,"1")){if(v != 0){$[k] = 1}}
' จากนั้นเปลี่ยนชื่อเป็น "1","g" file.txt
ก 00A98 00554 CCUG38
ก1 1 1 1
ก2 0 1 0
ก3 1 0 1
หรือ
$ mlr --idkvp --ifs tab --ips '_' --otsv unsparsify แล้วใส่ -S '
สำหรับ (k,v ในแผนที่ยกเว้น ($*,"1")){if(v != ""){$[k] = k "_" วี}}
' จากนั้นเปลี่ยนชื่อเป็น "1","g" file.txt
ก 00A98 00554 CCUG38
g1 00A98_01563 00554_01552 CCUG38_01373
ก2 00554_01444
g3 00A98_04566 CCUG38_05322
การจัดตำแหน่งมีลักษณะ "ปิด" ในกรณีสุดท้าย แต่แสดงผลด้วย --ocsv
แทนที่ --tsv
ควรยืนยันว่าถูกต้อง