如何使用FILENAME在awk中设置不同的文件

时间:2013-05-09 15:56:17

标签: unix

我有两个文件可以说...... 1)具有身份证,姓名和城市等信息的学生记录 2)学生分数有id,总分,百分比

学生记录(档案)

101 | nik | mumbai
102 | zeel | chennai
103 | gurav | delhi

学生成绩(档案)

101 | 80 | 80
102 | 90 | 90
103 | 90 | 90

我希望检索表格中的信息,例如学生姓名及其百分比

nik | 80
zeel | 90
gurav | 90

如何使用awk命令编写此内容

1 个答案:

答案 0 :(得分:1)

awk -F'|' -v OFS="|" 'NR==FNR{a[$1]=$2;next}$1 in a{print a[$1],$3}' studentfile markfile

没有测试,但应该工作。

输出就像:

nik|80
zeel|90
....

修改

 -F'|'                   #Field separator
 -v OFS="|"              #output field separator
 'NR==FNR{a[$1]=$2;next} #NR is overall record line number, FNR is record line number from one Input File. see man page for detail. this part was processing the first input file, and save id and name in an array
 $1 in a{print a[$1],$3}'#now processing the 2nd input file, the marks. if id in the array, print the value of the array (name), and the mark percentage field ($3)