【发布时间】:2016-08-01 00:40:53
【问题描述】:
我正在尝试将文件均匀地拆分为多个块。这是我的代码:
awk '/*/ { delim++ } { file = sprintf("splits/audio%s.txt", int(delim /2)); print >> file; }' < input_file
我的文件如下所示:
"*/audio1.lab"
0 6200000 a
6200000 7600000 b
7600000 8200000 c
.
"*/audio2.lab"
0 6300000 a
6300000 8300000 w
8300000 8600000 e
8600000 10600000 d
.
它给了我一个错误:awk: line 1: syntax error at or near * 我对 awk 了解得不够多,无法理解这个错误。我尝试转义字符,但仍然无法弄清楚。我可以在 python 中编写脚本,但我想学习如何在 awk 中执行此操作。任何awkers知道我做错了什么?
编辑:我有 14021 个文件。我以前两个为例。
【问题讨论】:
-
尚不清楚您到底想做什么。您是否尝试拆分文件或合并文件或其他内容?该样本是输入一个文件还是两个单独的文件?阐明
I am trying to split files evenly in a number of chunks.的含义并根据该示例输入发布预期输出。 -
按标题分割文件。方便地,标题是唯一带有“*”的行
-
所以你有 1 个文件看起来像你发布的输入,你想把它分成多个文件,每个块一个?或者您是否尝试将输入文件中的 2 个块放入每个输出文件(因此除以 2)或其他内容?这与您拥有 14021 个文件有什么关系?您想要跨所有输入文件的每个块的唯一输出文件还是某种合并或什么?同样,更好的描述和发布预期的输出将是一个很大的帮助。
-
每块一个。我进行了编辑,因为 David Gish 的第一个响应适用于较小的文件,而他的编辑适用于较大的文件。