Chinaunix

标题: 处理多次重复问题 [打印本页]

作者: xunong    时间: 2016-08-22 10:03
标题: 处理多次重复问题
求助大家:

假如文本1里面有部分内容与文本2内容重复,且在文本2内对应不同标题,如何提取出来:

文本1 :           文本2:

@11                @aa
123                 123
@12                @bb
111                 123
                      @xx
                      222


生成:
@aa
123
@bb
123
作者: jason680    时间: 2016-08-22 10:19

$ awk 'FNR==NR{a[$0]=1;next}{if(/^@/){h=$0"\n";next}if(a[$0])print h$0}' 1 2
@aa
123
@bb
123

作者: 杰瑞26    时间: 2016-08-22 17:20
awk写不来,用笨一点的方法,写个小脚本吧。
  1. #!/bin/bash

  2. arr=(`cat file1 | egrep '^[0-9]+'`)

  3. for item in ${arr[@]}
  4. do
  5.     cat file2 | grep -B 1 $item | tee -a  output
  6. done
复制代码

作者: wh7211    时间: 2016-08-22 22:25
本帖最后由 wh7211 于 2016-08-22 22:27 编辑

假如文本1里面有部分内容与文本2内容重复,且在文本2内对应不同标题,如何提取出来
  1. awk 'ARGIND==1&&$1~/^@/{s=$1;next}ARGIND==1{a[$1]=s;next}$1~/^@/{t=$1;next}{if(a[$1]&&a[$1]!=t)print t"\n"$1}' 1 2
  2. @aa
  3. 123
  4. @bb
  5. 123
复制代码

作者: jcdiy0601    时间: 2016-08-23 09:26
  1. awk 'NR==FNR{a[$1]=$1;next}{if(a[$1]){print test"\n"a[$1]}{test=$0}}' 1 2
复制代码

作者: moperyblue    时间: 2016-08-23 09:52
more 1 2
  1. ::::::::::::::
  2. 1
  3. ::::::::::::::
  4. @11
  5. 123
  6. @12
  7. 111
  8. ::::::::::::::
  9. 2
  10. ::::::::::::::
  11. @aa
  12. 123
  13. @bb
  14. 123
  15. @xx
  16. 222
  17. @11
  18. 123
复制代码
  1. awk 'NR==FNR&&/@/{getline x;a[x]=$0 RS x}/@/{getline x;if(a[x]&&a[x]!=$0 RS x)print $0 RS x}' 1 2
复制代码





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