[請益] shell script比對兩個檔案

看板Programming作者時間10年前 (2015/02/06 00:41), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
大家好,小弟有一個問題想請教各位先進 有兩個檔案 a.txt b.txt 其內容如下 a.txt 111|1234|100.0 111|1235|6000.0 222|3334|111.0 333|34435|546.0 666|234|99.0 b.txt 111|1234|100.0 111|1235|6000.0 333|34435|546.0 777|4555|700.0 他們前兩欄為primary key 我目標是想比對兩個檔案把兩個檔案merge成一個檔案 左邊為a.txt 右邊為b.txt 如果只有一邊有 , 另一邊就填 || 預期結果為: 111|1234|100.0|111|1234|100.0 111|1235|6000.0|111|1235|6000.0 222|3334|111.0||| 333|34435|546.0|333|34435|546.0 666|234|99.0 |||777|4555|700.0 小弟是先用cut + sort指令 去找出a.txt 和 b.txt的前兩欄值 output到一個檔案 pkid.txt 再用/bin/sh 程式執行,如下 #!/bin/sh while read line do pkid=$(echo $line | cut -d \| -f 1,2) var1=$(grep $pkid a.txt) if [ $? -ne 0 ] then var1="||" fi var2=$(grep $pkid b.txt) if [ $? -ne 0 ] then var2="||" fi echo "$var1|$var2" >> output.txt done < pkid.txt 想請問有比較好的辦法解決這類的問題嗎? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.62.14 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1423154471.A.240.html

02/06 03:43, , 1F
這不一定要用shell作吧?隨便一種腳本語
02/06 03:43, 1F

02/06 03:43, , 2F
言都秒完成的…
02/06 03:43, 2F

02/06 11:41, , 3F
用個python之類的寫一下就秒了吧…
02/06 11:41, 3F
文章代碼(AID): #1Kqvqd90 (Programming)
文章代碼(AID): #1Kqvqd90 (Programming)