+ -
当前位置:首页 → 问答吧 → 两个文件,如果存在匹配行就删除匹配行的前2行记录

两个文件,如果存在匹配行就删除匹配行的前2行记录

时间:2011-06-28

来源:互联网

两个文件,如果存在匹配行就删除匹配行的前2行记录

作者: zhwei228   发布时间: 2011-06-28

本帖最后由 ywlscpl 于 2011-06-28 11:08 编辑

a
b
c
match
d
match
....

match表示匹配行,这样的情况如何删?
两个文件有无关联?你的“匹配”的意思是不是表示两个文件有共同存在的行?

提问的智慧

作者: ywlscpl   发布时间: 2011-06-28

文件1
aaa
bbb
1.1.1.1
ccc
ddd
eee
1.1.1.1

文件2
1.1.1.1
2.2.2.2
想要的结果是(删除匹配行的前2行记录)
1.1.1.1
cccc
1.1.1.1

作者: zhwei228   发布时间: 2011-06-28

回复 zhwei228
  1. $ awk  'ARGIND==1{a[$0];nextfile}{if($0 in a)b[nr=FNR-2]=1;c[FNR]=$0}END{for(i=1;i<=nr;i++)if(b[i]){i+=2;print c[i]}else{print c[i] }}' 2.txt 1.txt
  2. 1.1.1.1
  3. ccc
  4. 1.1.1.1
复制代码

作者: yinyuemi   发布时间: 2011-06-28