linux下两个文件想合并如何通过shell操作
文件1内容:d4615935ce91128e5d2774c47cae3527*./usr/bin/camdad95ad574540d831d4ec66220a3ef24e...
文件1内容:
d4615935ce91128e5d2774c47cae3527 *./usr/bin/camd
ad95ad574540d831d4ec66220a3ef24e *./usr/lib/libdxo.so
b5a344d58858b78557ab1db9b7dc0033 *./usr/lib/libisphal.so
8df9b47791fa1e2cb885ff60b3e7abab *./etc/camd/smia_ed.cfg
632d6d1bc2f39b136785c805aae38b46 *./etc/camd/vx6852-once-0.00.bin
4a7526c92d27ecceb8e4e59d4ce5bbcf *./etc/camd/vx6852-once-0.10.bin
4cac5f922e93b2cfd1b73de4cc966f21 *./etc/camd/vx6852-once-1.20.bin
cfb82c102a92d53669b6998f37d93491 *./etc/camd/vx6852-once-2.21.bin
b6d9af45ec832b9bdf300e86687e72bc *./etc/camd/vx6852-load-firmware
69d70ac95ccd4b85fde41905ec528cfa *./etc/event.d/vx6852
ce3b3e8810280e01fc621c1c6130726a *./etc/event.d/camd
文件2内容:
5656535ce91128e5d2774c47cae3527 *./usr/bin/camd
565656fgftryyttw45456566566656edd*./usr/lib/libisphal.so
如何以文件2为准合并到文件1中呢?
不是为了合并。
是有不同的,合并的同时还要替换的。 展开
d4615935ce91128e5d2774c47cae3527 *./usr/bin/camd
ad95ad574540d831d4ec66220a3ef24e *./usr/lib/libdxo.so
b5a344d58858b78557ab1db9b7dc0033 *./usr/lib/libisphal.so
8df9b47791fa1e2cb885ff60b3e7abab *./etc/camd/smia_ed.cfg
632d6d1bc2f39b136785c805aae38b46 *./etc/camd/vx6852-once-0.00.bin
4a7526c92d27ecceb8e4e59d4ce5bbcf *./etc/camd/vx6852-once-0.10.bin
4cac5f922e93b2cfd1b73de4cc966f21 *./etc/camd/vx6852-once-1.20.bin
cfb82c102a92d53669b6998f37d93491 *./etc/camd/vx6852-once-2.21.bin
b6d9af45ec832b9bdf300e86687e72bc *./etc/camd/vx6852-load-firmware
69d70ac95ccd4b85fde41905ec528cfa *./etc/event.d/vx6852
ce3b3e8810280e01fc621c1c6130726a *./etc/event.d/camd
文件2内容:
5656535ce91128e5d2774c47cae3527 *./usr/bin/camd
565656fgftryyttw45456566566656edd*./usr/lib/libisphal.so
如何以文件2为准合并到文件1中呢?
不是为了合并。
是有不同的,合并的同时还要替换的。 展开
4个回答
展开全部
写在一条命令里有点复杂哦。合并结果保存到文件3中。
awk -F'*' 'NR==FNR{a[FNR]=$1;b[FNR]=$2;c=FNR}NR>FNR{flag=0;for(i=1;i<=c;i++){if($2==b[i]){print a[i] $2;flag=1;break;}}if(flag==0)print}' file2 file1 >file3
思路:
以 * 作为字段分隔符,将每行记录分割为两个字段。
1. 将文件2每行记录的两个字段分别以数组形式保存下来,并记录行数。
2. 对于文件1中的每一行,使迟升用for循环与上一步记录的文件2的字段2数组对比。若相同,则打印文件2的字段1和文件码培老1的字段2。若不同,则打印文件1中的原记录。最后的合并结果保中隐存到文件3中。
试过OK。
awk -F'*' 'NR==FNR{a[FNR]=$1;b[FNR]=$2;c=FNR}NR>FNR{flag=0;for(i=1;i<=c;i++){if($2==b[i]){print a[i] $2;flag=1;break;}}if(flag==0)print}' file2 file1 >file3
思路:
以 * 作为字段分隔符,将每行记录分割为两个字段。
1. 将文件2每行记录的两个字段分别以数组形式保存下来,并记录行数。
2. 对于文件1中的每一行,使迟升用for循环与上一步记录的文件2的字段2数组对比。若相同,则打印文件2的字段1和文件码培老1的字段2。若不同,则打印文件1中的原记录。最后的合并结果保中隐存到文件3中。
试过OK。
展开全部
cat 文件1 文件2 >文件3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cat 文件2 >> 文件1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2f 正解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询