如何安全地提取header信息并用awk制作文件名?

how to safely extract header information and make the name of the file with awk?

我有一个文本文件如下:

group 
time    label1
1         1
2         2
3         3
group 
time   label2
5        8
6        9
7        10

我想要 1) 拆分文件以便只有数字 2) 删除组、时间和标签 header 信息以及 3) 用相应的 [=31= 标记每个文件].

这是我希望输出的样子:

label1.txt

1         1
2         2
3         3

label2.txt

5        8
6        9
7        10

我一直在用 awk 做这件事,但是,我 运行 遇到有时文件被错误的文件名覆盖的问题:

awk '!/group /' text.dat > nogroup.txt #removing 'group'
 
split -dl 5 --additional-suffix=.txt nogroup.txt split.txt
 
mv graph.dat00.txt label1.txt
mv graph.dat01.txt label2.txt
  
awk 'NR!=1' label1.txt > label1.txt
awk 'NR!=1' label2.txt > label2.txt

如何确保文件名(label1)等于文件中的标签?

谢谢!

 $ awk '~/^[0-9]+$/{print > out; next} {close(out); out=".txt"}' file

$ head label?.txt
==> label1.txt <==
1         1
2         2
3         3

==> label2.txt <==
5        8
6        9
7        10

关于代码中的 awk 'NR!=1' label1.txt > label1.txt - 永远不要尝试写入您正在阅读的同一个文件,因为 shell 可以在命令开始 运行 之前清空输出文件,所以您最终可能会切换输入文件。而是做 awk 'NR!=1' label1.txt > tmp && mv tmp label1.txt 或类似的。