![](/img/trans.png)
[英]How to extract specific columns from different files and output in one file?
[英]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.