Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在文件中找不到id,则awk将缺失添加到顺序中_Awk - Fatal编程技术网

如果在文件中找不到id,则awk将缺失添加到顺序中

如果在文件中找不到id,则awk将缺失添加到顺序中,awk,Awk,下面的awk将在file2的$2中的file1中查找ID,如果它们匹配,则打印$2。如果在file2(如ARRR和AAAA)中缺少或未找到id,我无法找出如何将其添加到输出中的行中,因为在$3中缺少相同的格式。也就是说,$1中的下一个序列号,$2中的文件1中的id,以及$3中缺少的单词。谢谢:) awk awk -F'\t' 'NR==FNR{A[$1];next}$2 in A' file1 file2 文件1空格分隔 AARS AARS2 AARS2;TMEM151B ARRR AAAS

下面的
awk
将在
file2
$2
中的
file1
中查找ID,如果它们匹配,则打印
$2
。如果在
file2
(如ARRR和AAAA)中缺少或未找到id,我无法找出如何将其添加到输出中的行中,因为在
$3
中缺少相同的格式。也就是说,
$1
中的下一个序列号,
$2
中的
文件1
中的id,以及
$3
中缺少的单词。谢谢:)

awk

awk -F'\t' 'NR==FNR{A[$1];next}$2 in A' file1 file2
文件1
空格分隔

AARS
AARS2
AARS2;TMEM151B
ARRR
AAAS
AAAA
AADAC
文件2
制表符分隔

1   AARS     100.00
2   AARS2    100.00
3   AARS2;TMEM151B   100.00
4   AAAS     100.00
5   AADAC    100.00
1   AARS     100.00
2   AARS2    100.00
3   AARS2;TMEM151B   100.00
4   AAAS     100.00
5   AADAC    100.00
6   ARRR    missing
7   AAAA    missing
所需输出
制表符分隔

1   AARS     100.00
2   AARS2    100.00
3   AARS2;TMEM151B   100.00
4   AAAS     100.00
5   AADAC    100.00
1   AARS     100.00
2   AARS2    100.00
3   AARS2;TMEM151B   100.00
4   AAAS     100.00
5   AADAC    100.00
6   ARRR    missing
7   AAAA    missing
awk解决方案:

awk 'NR==FNR{ a[$0]; next }$2 in a{ delete a[$2] }
     END{ for(i in a) print ++FNR,i,"missing" }1' file1 OFS='\t' file2
输出:

1   AARS     100.00
2   AARS2    100.00
3   AARS2;TMEM151B   100.00
4   AAAS     100.00
5   AADAC    100.00
6   AAAA    missing
7   ARRR    missing