我有两个管道分隔文件
文件1.txt
f1|f2|f3|f4|
123456|C|aws|zip|
589445|D|csv|zip|
789466|C|txt|tar|
874512|A|row|war|
文件2.txt
f1|f2|f3|f4|
458788|C|aws|zip|
589445|D|||
789466|C|wd|rar|
458745|A|xls|rar|
最终.txt
123456|C|aws|zip|
789466|C|wd|rar|
874512|A|row|war|
458745|A|xls|rar|
1.从File2中取出字段f2,如果是D,则从File2中取出相应的字段f1,并在File1中找到与字段f1匹配的相应行,并从File1中删除该行。同样的方式
2.从File2中取出字段f2,如果是C,则从File2中取出相应的字段f1,并在File1中找到与字段f1匹配的相应行,并将File1中的行替换为File2中的相应行。
2.从File2中取出字段f2,如果是A,则直接将该行添加到File1中作为新行。
答案1
这对我有用:
while read line
do
i=$(echo $line | cut -d\| -f1 )
f=$(echo $line | cut -d\| -f2 )
case $f in
D) sed -i /^$i/d File1.txt ;;
C) sed -i s/^$i.*/$line/ File1.txt ;;
A) echo $line >> File1.txt;;
esac
done < File2.txt