Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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
Awk 将一个文件中的行与另一个文件中的列匹配_Awk - Fatal编程技术网

Awk 将一个文件中的行与另一个文件中的列匹配

Awk 将一个文件中的行与另一个文件中的列匹配,awk,Awk,我有两个文件,其中一个文件在每行中包含名称,如下所示:- GTX-1175F-223-RGXC GTX-1135F-223-RGXC GTX-1145F-223-RGXC GTX-1155F-223-RGXC GTX-1185F-223-RGXC 第二个文件包含文件1中所述每个名称的值,如下所示: GTX-1175F-223-RGXC GTX-1135F-223-RGXC GTX-1155F-223-RGXC GTX-1175F-240-RGXC 2.3 12 5.6 4 3.4 4.5 0.

我有两个文件,其中一个文件在每行中包含名称,如下所示:-

GTX-1175F-223-RGXC
GTX-1135F-223-RGXC
GTX-1145F-223-RGXC
GTX-1155F-223-RGXC
GTX-1185F-223-RGXC
第二个文件包含文件1中所述每个名称的值,如下所示:

GTX-1175F-223-RGXC GTX-1135F-223-RGXC GTX-1155F-223-RGXC GTX-1175F-240-RGXC
2.3 12 5.6 4
3.4 4.5 0.8 6
3.8 89 0.2 4
预期产量

GTX-1175F-223-RGXC GTX-1135F-223-RGXC GTX-1155F-223-RGXC
2.3 12 5.6 
3.4 4.5 0.8
3.8 89 0.2 
我希望有一个输出,其中文件2中与文件1中的行名称匹配的列名连同值一起被提取

如果是列匹配,就会是这样

awk 'FNR==NR{ a[$1]=$0;next } ($1 in a)' file2 file1
有谁能帮我弄一条awk的单班轮吗


谢谢

您可以尝试此2通
awk
解决方案:

awk'FNR==NR{
见[1美元]
下一个
}
{
s=“”

对于(i=1;i您可以尝试此2遍
awk
解决方案:

awk'FNR==NR{
见[1美元]
下一个
}
{
s=“”

对于(i=1;i类似于@anubhava的答案:

awk'
NR==FNR{seen[$1];next}

FNR==1{(i=1;i类似于@anubhava的答案:

awk'
NR==FNR{seen[$1];next}

FNR==1{for(i=1;我理解这一部分,我失败了,这就是为什么我寻求帮助或指导。请发布您尝试的代码,然后我们肯定可以提供帮助如果是针对列,它可能是类似于awk'FNR==NR{a[$1]=$0;next}($a中的1)'file2 file1请将此尝试的代码放在问题正文中。注释不是检查代码的正确位置。如果您可以显示您的预期输出,也会很好。我了解这一部分,我失败了,这就是为什么我寻求帮助或指导。请发布您尝试的代码,然后我们肯定可以提供帮助。如果它是针对专栏,我t可能是这样的awk'FNR==NR{a[$1]=$0;next}($a中的1)'file2 File1请将此尝试的代码放在问题正文中。注释不是检查代码的正确位置。如果您可以显示有问题的预期输出,也会很好。我之前编写了此内容,但对其进行了增强,因为它在每行上都留下了尾随空格。我之前编写了此内容,但对其进行了增强,因为它留下了tr每一行都有空格。由于某种奇怪的原因,我的代码和Glenn的代码的输出都为空。输入文件相同。你能做
cat-vte file1
检查它的输出,看看你是否没有
^M
(DOS行结束)可能吧。出于某种奇怪的原因,我得到了空白作为您和Glenn代码的输出。相同的输入文件。您可以执行
cat-vte file1
检查它的输出,看看是否有
^M
(DOS行尾)的可能。