awk 处理多个文件

 

awk可以使用自身变量NR和FNR来处理多个文件。

NR:表示awk开始执行程序后所读取的数据行数。

FNR:awk当前读取的记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。

NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件。

 

#下面语句用于合并两个文件,对于第1列相同的那些行,输出第一个文件和第二个文件

awk 'NR==FNR{a[$1]=$0;next} {if($1 in a)print $1FSa[$1]FS$2}' file1 fiel2

 

 

 

#下面语句用于合并两个csv文件,第一列相同的行合并输出,第一列不同的分别输出

awk -F','  'ARGIND==1{file1[$1]=$0;next} \

ARGIND==2{if($1 in file1) {print file1[$1]FS$2; same_item[$1]=$0;} else print $1",,"$2} \

ARGIND==3{if(!($1 in same_item)) print $1FS$2","}' new_QD.csv old_QD.csv new_QD.csv

 

 

 

 

你可能感兴趣的:(linux,awk-sed)