[请益] shell script比对两个档案

楼主: smallyou1988   2015-02-06 00:41:08
大家好,小弟有一个问题想请教各位先进
有两个档案 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
想请问有比较好的办法解决这类的问题吗?
谢谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com