【发布时间】:2018-01-04 18:00:42
【问题描述】:
我有 2 个文件:
1.txt:
e10adc3949ba59abbe56e057f20f883e
f8b46e989c5794eec4e268605b63eb59
e3ceb5881a0a1fdaad01296d7554868d
2.txt:
e10adc3949ba59abbe56e057f20f883e:1111
679ab793796da4cbd0dda3d0daf74ec1:1234
f8b46e989c5794eec4e268605b63eb59:1@/233:
我想要 2 个文件作为输出: 一个是 result.txt,其中包含来自 2.txt 的行,其匹配在 1.txt 另一个是 left.txt,其中包含 1.txt 中匹配不在 2.txt 中的行
两个文件的预期输出如下: 结果.txt
e10adc3949ba59abbe56e057f20f883e:1111
f8b46e989c5794eec4e268605b63eb59:1@/233:
left.txt
e3ceb5881a0a1fdaad01296d7554868d
我用 awk 尝试了 1-2 种方法,但没有成功。任何帮助将不胜感激。
我的脚本:
awk '
FNR==NR{
val=$1;
sub(/[^:]*/,"");
sub(/:/,"");
a[val]=$0;
next
}
!($NF in a){
print > "left.txt";
next
}
{
print $1,$2,a[$NF]> "result.txt"
}
' FS=":" 2.txt FS=":" OFS=":" 1.txt
【问题讨论】:
-
目标是您添加一些自己的代码,以至少展示您为解决这个问题所做的研究工作。
-
有了你最后两个问题(Merge two files using awk in linux 和Compare two files based on the condition using awk)的答案,你应该可以自己做。
-
我已经删除了我的帖子(该帖子发布在赛勒斯评论时间副附近),请回答赛勒斯问题将重新发布。
-
我试图从我最近的 2 个帖子中学习,但脚本非常复杂,所以我无法理解它们。我现在发布了这个简单的问题,以便我可以从中学习。谢谢:)
-
@BhawandeepSingla,很公平,我现在在我的答案中添加了解释,请尝试从它和其他答案中学习,因为我们都在这里改进和学习,干杯:)