Chinaunix

标题: 遇到一些问题 [打印本页]

作者: aaaa_123    时间: 2019-11-09 20:54
标题: 遇到一些问题
本帖最后由 aaaa_123 于 2019-11-11 15:25 编辑

cat a.txt

[456464278640]
a
o
Version=122121212
$$2=007962CF91FB515
$$5=0FB515C006
$$7=00B36C0A03A005C



cat b.txt

$$1=000786A6F0

$$3=03B0676F0AD8E

$$6=0300


从这Version开始,  把b文件每行插入a文件中去  每发现有Version, 就这开始把b文件内容插入a文件中去

似乎由Version开始  都是从$$0起    插入时按 $$1 $$2 $$3 $$4 $$5 顺序排列出来

谢谢了


然后需准确得到下面

[456464278640]
a
o
Version=122121212
$$1=000786A6F0
$$2=007962CF91FB515
$$3=03B0676F0AD8E
$$5=0FB515C006
$$6=0300
$$7=00B36C0A03A005C






作者: aaaa_123    时间: 2019-11-09 21:38
              
作者: cfwyy    时间: 2019-11-10 13:21
本帖最后由 cfwyy 于 2019-11-10 16:44 编辑

test.awk
  1. !/Version/
  2. /Version/{
  3.     print $0
  4.     while(getline>0){
  5.         if($0 ~/\$\$/)
  6.             a[NR]=$0
  7.         else
  8.             break
  9.     }
  10.     system(">""tmp")
  11.     for(i in a)
  12.         print a[i] >>"tmp"
  13.     system("sort -m tmp b.txt>meger")
  14.     system("sort -t= -k1.3,1n meger")
  15.     delete a
  16.     if($0 !~/\$\$/)
  17.         print $0
  18. }
复制代码

  1. awk -f test.awk a.txt
复制代码


作者: aaaa_123    时间: 2019-11-10 16:09
回复 3# cfwyy

Thanks  非常帅  而且还是awk
作者: aaaa_123    时间: 2019-11-10 16:30
本帖最后由 aaaa_123 于 2019-11-10 20:41 编辑


.....OK         
作者: Looiml    时间: 2020-03-01 23:50
本帖最后由 Looiml 于 2020-03-01 23:56 编辑
  1. cat a
复制代码

[456464278640]
a
o
Version=122121212
$2=007962CF91FB515
$5=0FB515C006
$7=00B36C0A03A005C
  1. cat b
复制代码

$1=000786A6F0
$3=03B0676F0AD8E
$6=0300
  1. awk '1;/^Version/,0{if(getline<"b">0)print;else close("b")}' a
复制代码

[456464278640]
a
o
Version=122121212
$1=000786A6F0
$2=007962CF91FB515
$3=03B0676F0AD8E
$5=0FB515C006
$6=0300
$7=00B36C0A03A005C
作者: wh7211    时间: 2020-03-20 15:36
回复 1# aaaa_123


  1. cat 1
  2. [456464278640]
  3. a
  4. o
  5. Version=122121212
  6. $2=007962CF91FB515
  7. $5=0FB515C006
  8. $7=00B36C0A03A005C

  9. cat 2
  10. $1=000786A6F0

  11. $3=03B0676F0AD8E

  12. $6=0300

  13. awk -F"=" 'FILENAME==ARGV[1]{if(NF>0){a[$1]=$0};next}!b{print;if($0~/Version/){b=1;next}}b{a[$1]=$0}END{for(i in a){print a[i]}}' 2 1
  14. [456464278640]
  15. a
  16. o
  17. Version=122121212
  18. $1=000786A6F0
  19. $2=007962CF91FB515
  20. $3=03B0676F0AD8E
  21. $5=0FB515C006
  22. $6=0300
  23. $7=00B36C0A03A005C
复制代码





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