美文网首页
awk合并文件

awk合并文件

作者: 赵会成 | 来源:发表于2019-03-09 15:15 被阅读0次

    一个awk由三个部分组成:BEGIN语句块、END语句块和能够使用模式匹配的通用语句块

    这三个部分是可选的,任何一个部分都可以不出现在脚本中。

    awk 'BEGIN {statements} {statements} END {end statements}'

    例如打印文件行数

    awk 'BEGIN {i = 0} {i++} END {print i}' filename #三个部分

    awk 'END{print NR}' filename #可只用第三个部分

    wc -l filename | awk '{print $1}' #先计算 只显示行数

    awk常用参数

    NR:整个脚本当前已经读取过的记录数,就是行号,从1开始。随着所读文件的数目,一直累加。

    FNR:同NR,不过是针对当前在读的文件记录数。每开始读一个新文件时,从1开始累加,相当于行号。读完一个文件后就会清0,新的文件又会从1开始。

    FILENAME:当前文件名

    $0:读取文件的当前行

    $n(n>0):第n列数据

    NR:一行记录的字段的数目,也就是列数。

    TCL_P728M       TCL     74eda717a4aef660f362f1806eb85d9d

    TCL_S720_JB2    TCL     ecb6724875f6361466f4e91df603f06c

    TCL_P728M       TCL     f654f6d4f2157a658c0d7f688bb074b8

    TCL_P728M       TCL     d8ed297d1a0a405434e49f66d00d92ae

    TCL_P728M       TCL     5afcdd7b3eec3e15e636e3c7f249938a

    d8ed297d1a0a405434e49f66d00d92ae        5

    f654f6d4f2157a658c0d7f688bb074b8        2

    74eda717a4aef660f362f1806eb85d9d        15

    TCL_P728M       TCL     f654f6d4f2157a658c0d7f688bb074b8|2

    TCL_S720_JB2    TCL     ecb6724875f6361466f4e91df603f06c

    TCL_P728M       TCL     74eda717a4aef660f362f1806eb85d9d|15

    TCL_P728M       TCL     5afcdd7b3eec3e15e636e3c7f249938a

    TCL_P728M       TCL     d8ed297d1a0a405434e49f66d00d92ae|5

     awk   '{if(NR==FNR){a[$3]=$0} else{a[$1]=a[$1]"|"$2}} END{for(i in a) {print a[i]}}' push cru

    awk 'NR==FNR{a[$3]=$0;next}{print a[$1]}' push cru #只显示匹配上的文件

    awk 'NR=FNR{a[$3]=$0;next}{print a[$1]"|"$2}' push cru#前后两个文件都显示

    相关文章

      网友评论

          本文标题:awk合并文件

          本文链接:https://www.haomeiwen.com/subject/esgspqtx.html