繁体   English   中英

如何从合并的文件中提取文件

[英]How to extract files from a merged file

我想将合并的文件分成两个文件。 文件:

file.dat

i =100
1 2 3
i =1
-1 -2 -3
i =101
1 2 3
i =102
1 2 3
i =103
1 2 3
i =2
-1 -2 -3 
....

混合指数是

1,2,3,4, ...,99 

100, 101, 102, 103,...,200.

索引交替显示,但是没有规则。 数据

1 2 3 

-1 -2 -3 

仅表示每个步骤中的数据块。

您能否给出一个关于索引将合并文件分为两个文件的想法?

如果只希望将数据块附加到两个不同的文件中,这取决于它属于哪个索引组,则应该可以:

# separate.awk

{
  if ($1 == "i")
  {
    split($2,a,"=");
    i = a[2];
  }

  if (i < 100)
    print > "1-99.dat";
  else
    print > "100-200.dat"
}

$ awk -f separate.awk file.dat

$ cat 1-99.dat
i =1
-1 -2 -3
i =2
-1 -2 -3 

$ cat 100-200.dat
i =100
1 2 3
i =101
1 2 3
i =102
1 2 3
i =103
1 2 3

这个awk应该为您做:

awk -F= '/=/{f="a.txt";if($2>99)f="b.txt";next} {print >f}' file.dat

首先,将字段分隔符设置为= 然后,它检查该行是否包含等号,如果是,则应根据等号后的数字将输出文件的名称设置为“ a.txt”或“ b.txt”。 然后在随后的记录中,我们只写到最后选择的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM