Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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比较2个文件,打印匹配,只打印第二个文件的2列_Awk - Fatal编程技术网

awk比较2个文件,打印匹配,只打印第二个文件的2列

awk比较2个文件,打印匹配,只打印第二个文件的2列,awk,Awk,我是新手,我相信这是一个愚蠢的问题,但我搜索,我没有找到答案。 我只想选择文件2的两列。我知道如何选择一列=$1和所有列=$0。但如果我们只想展示2,3。。。我的文件3中文件2的列,是否可能 awk -v RS='\r\n' 'BEGIN {FS=OFS=";"} FNR==NR {a[$2] = $1; next} {gsub(/_/,"-",$2);$2=toupper($2);print a[$2]?a[$2]:"NA",$0,a[$2]?a[$2]:"NA"}' $File2 $File

我是新手,我相信这是一个愚蠢的问题,但我搜索,我没有找到答案。 我只想选择文件2的两列。我知道如何选择一列=$1和所有列=$0。但如果我们只想展示2,3。。。我的文件3中文件2的列,是否可能

awk -v RS='\r\n' 'BEGIN {FS=OFS=";"} FNR==NR {a[$2] = $1; next} {gsub(/_/,"-",$2);$2=toupper($2);print a[$2]?a[$2]:"NA",$0,a[$2]?a[$2]:"NA"}' $File2 $File1 > file3

我只想从file2中得到$1和$2,这段代码不起作用。我从$1和$2中获得一列数据

awk -v RS='\r\n' 'BEGIN {FS=OFS=";"} FNR==NR {a[$2] = $1$2; next} {gsub(/_/,"-",$2);$2=toupper($2);print a[$2]?a[$2]:"NA",$0,a[$2]?a[$2]:"NA"}' $File2 $File1 > file3

任何解决方案???

感谢您在这里展示您的努力。你能在这里发布输入文件和预期输出的示例吗?非常感谢,这正是我的问题。谢谢你的解释,收到第二张支票总是很好的!!
awk -v RS='\r\n' ' # call awk  and set row separator 
        BEGIN {
                  FS=OFS=";"     # set input and output field separator
        } 

        # Here you are reading first argument that is File2
        FNR==NR {
                   # Save column2 and column3 separated by OFS that is ; 
                   # from File2 which is first argument, in array a 
                   # whose index/key being second field/column from File2 

                   a[$2] = $2 OFS $3; 

                   # Stop processing go to next line of File1
                   next
        }
        # Here on words you are reading second argument that is File1
        {
              # Global substitution 
              # replace _ with hyphen - in field2/column2 
              gsub(/_/,"-",$2);

              # Uppercase field2/column2 
              $2=toupper($2);

              # If field2 of current file (File1) exists in array a
              # which is created above using File2 then
              # print array value that is your field2 and field3 of File2
              # else print "NA", and then output field separator, 
              # entire line/record of current file

              print ($2 in a ? a[$2] : "NA"), $0

         }' $File2 $File1 > file3
awk -v RS='\r\n' ' # call awk  and set row separator 
        BEGIN {
                  FS=OFS=";"     # set input and output field separator
        } 

        # Here you are reading first argument that is File2
        FNR==NR {
                   # Save column2 and column3 separated by OFS that is ; 
                   # from File2 which is first argument, in array a 
                   # whose index/key being second field/column from File2 

                   a[$2] = $2 OFS $3; 

                   # Stop processing go to next line of File1
                   next
        }
        # Here on words you are reading second argument that is File1
        {
              # Global substitution 
              # replace _ with hyphen - in field2/column2 
              gsub(/_/,"-",$2);

              # Uppercase field2/column2 
              $2=toupper($2);

              # If field2 of current file (File1) exists in array a
              # which is created above using File2 then
              # print array value that is your field2 and field3 of File2
              # else print "NA", and then output field separator, 
              # entire line/record of current file

              print ($2 in a ? a[$2] : "NA"), $0

         }' $File2 $File1 > file3