Chinaunix

标题: 解释下这个awk语句谢谢 [打印本页]

作者: xiaobaixy    时间: 2010-04-19 17:08
标题: 解释下这个awk语句谢谢
a文件:
123   aaa
234  fff
444   hgfgh
666   fdgsd
b文件:
123  dsf  dsf
2   dsfds fdf
444   dsfds  dsf
  1. awk 'NR==FNR{a[$1]=$2}NR!=FNR&&($1 in a){$1=$1" "a[$1];print}' a b
复制代码
输出为
123  aaa dsf dsf
444   hgfgh dsfds  dsf


看不明白a b两个参数是怎么用 的
作者: lkk2003rty    时间: 2010-04-19 17:10
回复 1# xiaobaixy


    a和b不就是那两文件么?
作者: where27    时间: 2010-04-19 17:12
回复 2# lkk2003rty


    数组和文件搞混了。。
作者: wtuter    时间: 2010-04-19 17:12
回复 1# xiaobaixy


    awk 'NR==FNR{a[$1]=$2}NR!=FNR&&($1 in a){$1=$1" "a[$1];print}' a b

'NR==FNR{a[$1]=$2}  读 a 文件

NR!=FNR后面的读b 文件
作者: fllintel    时间: 2010-04-19 17:12
那是 2个文件啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: xiaobaixy    时间: 2010-04-19 17:13
回复 2# lkk2003rty


    awk的格式不是 awk 'pattern {action}’ filename 么?
两个file怎么解释
作者: lkk2003rty    时间: 2010-04-19 17:16
回复 6# xiaobaixy

NR与FNR的区别
  1. [oracle@s12071 ~]$ wc -l file1
  2. 3 file1
  3. [oracle@s12071 ~]$ wc -l file2
  4. 1 file2
  5. [oracle@s12071 ~]$ awk '{print NR}' file1 file2
  6. 1
  7. 2
  8. 3
  9. 4
  10. [oracle@s12071 ~]$ awk '{print FNR}' file1 file2
  11. 1
  12. 2
  13. 3
  14. 1
复制代码

作者: Shell_HAT    时间: 2010-04-19 17:33
回复 6# xiaobaixy


因为file后面有省略号:
SYNOPSIS
      awk [-Ffs] [-v var=value] [program | -f progfile ...] [file ...]

作者: ghp268    时间: 2010-04-19 18:07
awk 可以读入多个文件内容
作者: welcome008    时间: 2010-04-19 18:54
回复  xiaobaixy

NR与FNR的区别
lkk2003rty 发表于 2010-04-19 17:16



    有些系统上的awk不支持FNR
作者: xiaobaixy    时间: 2010-04-20 10:18
回复 7# lkk2003rty


    谢谢




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2