我有一个问题,肯定可以用awk单行解决。
我想将现有数据文件拆分为单独的文件,该文件由数据块组成。 数据文件具有以下形式:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
我希望将每个数据块存储在一个单独的文件中,例如 - “1.dat”,“。dat”,“3.dat”,... 问题是,每个块没有特定的行号,它们只是由两个“新行”分隔。
提前致谢, 尔根
答案 0 :(得分:4)
这应该让你开始:
awk '{ print > ++i ".dat" }' RS= file.txt
如果用两个“新行”表示两个换行符:
awk '{ print > ++i ".dat" }' RS="\n\n" file.txt
看看结果有何不同?设置null RS
(即第一个示例)可能就是您正在寻找的。
答案 1 :(得分:1)
另一种方法:
awk 'NF != 0 {print > $1 ".dat"}' file.txt