我知道这个平台上已经回答了我的一些相同问题,但我尝试了几个小时的所有解决方案,却找不到我的错误。因此,如果能提供任何提示或帮助,帮助我解决我做错的事情,我将不胜感激。
像这儿https://unix.stackexchange.com/questions/216511/comparing-the-first-column-of-two-files-and-printing-the-entire-row-of-the-secon和这里我如何比较两个文件中的数据以识别共同数据和独特数据?我有两个文件,我想过滤掉文件 2 中与文件 1 中的第 1 列匹配的行。在我看来,针对相同问题提出的解决方案应该有效,但不幸的是,它们没有。我的文件是制表符分隔的。
文件_1.txt
apple
great
see
tree
文件_2.txt
apple 5.21 Noun
around 6.21 Adverb
great 2 Adjective
bee 1 Noun
see 7.43 Verb
tree 3 Noun
输出应如下所示:
apple 5.21 Noun
great 2 Adjective
see 7.43 Verb
tree 3 Noun
我试过通讯-12,
awk (e.g awk 'NR==FNR{a[$1];next} ($1 in a)' file_1.txt file_2.txt > output.txt)
我知道这可能是一个愚蠢的问题,我提前道歉。但我似乎无法弄清楚。
答案1
其中一种方法是这样的:
awk ' BEGIN { while ((getline <"file2.txt") > 0) {REC[$1]=$0}}
{print REC[$1]}' <file1.txt
开头的 getline 读取 file2.txt 并将其存储在数组中REC
,由第一条记录索引。
然后,代码的“主要”部分读取 file1.txt 的内容,并简单地使用该行上的第一个字从现在存储在 中的 file2.txt 中查找相应的行REC
。
示例输出:
apple 5.21 Noun
great 2 Adjective
see 7.43 Verb
tree 3 Noun