【发布时间】:2019-05-03 03:00:10
【问题描述】:
我需要在一个文件中提取特定的数据子集。 该文件如下所示。
n_1
@ 1 # # # # # # # # # # # # # # #
* # # # #
* # # # #
* # # # #
* # # # #
* # # # #
# # # # # # # # #
* *
* *
n_2
@ 2 # # # # # # # # # # # # # # #
* # # # #
* # # # #
* # # # #
* # # # #
# # # # # # # # #
* *
* *
n_3
.
.
.
这里,
@ : 某种模式
#: 编号
1,2,3 ...:索引
* : 字符或字符串
n_i 表示每个块中@和#之间的*个数。例如,我们可以说 n_1 是 5(在 @ 1 # # ... 和 # # # # ... 之间),而 n_2 是 4,因此每个块都没有固定线。
我的最终目标是提取每个测试块并将它们插入到终端上的循环语句中。然后,重新提取每个块内的数据。
for i in $(extracted every block); do ...; done
在这里,我找到了另一种将每个块与每个文件分开的方法。
awk -vRS= '{print > "block" NR}' file
但是我遇到
awk: cannot open "block1021" for output (Too many open files)
因为该文件包含超过 100,000 个块
【问题讨论】:
-
不清楚,请就您的问题提供更明确的细节。
-
@RavinderSingh13 抱歉遗漏太多。我添加了更多细节,但也很难理解我的问题。有不明白的地方请留言。另一种方式意味着简单地将每个段落分隔到每个文件中。但由于段落数量众多,我得到了那个错误。