+ -
当前位置:首页 → 问答吧 → 求一个AWK文本比对语句

求一个AWK文本比对语句

时间:2011-03-29

来源:互联网

文本a.txt内容:
dsdc|1235|错误
swwe|4096|错误
文本b.txt内容
1|aa|bb
2|ss|ff
...
1235|sg|aa
...
4096|cc|ar
...

说明:文本a.txt中第二列是b.txt的行号,现需将b.txt包含在a.txt 第二列的行号全部打印出来为c.txt
结果如下:
1235|sg|aa
4096|cc|ar

作者: haiyuey   发布时间: 2011-03-29

本帖最后由 xiaopan3322 于 2011-03-29 17:54 编辑

awk菜鸟,我只会这种垃圾代码,有点不堪入目,不要介意:
  1. $ for i in `awk -F'|' '{print $2}' urfile1`; do grep $i urfile2; done
  2. 1235|sg|aa
  3. 4096|cc|ar
复制代码

作者: xiaopan3322   发布时间: 2011-03-29

awk -f test.awk a.txt b.txt


BEGIN{
    FS = "|"
}

FNR==NR{
   array[$2] = $0
}
FNR!=NR{
   if ($1 in array)
       print array[$1] >> c.txt
}

作者: chenbin200818   发布时间: 2011-03-29

回复 haiyuey


    awk -F'|' 'NF==FNR{a=$2}NF!=FNR{if($0~/a/)print $0}' a b

作者: wtuter   发布时间: 2011-03-29

热门下载

更多