首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用非特定分隔符提取大型数据集的块

使用非特定分隔符提取大型数据集的块
EN

Stack Overflow用户
提问于 2021-04-29 01:33:20
回答 2查看 32关注 0票数 1

我在一台linux服务器上工作,有一个非常大的数据集,其结构如下:

代码语言:javascript
运行
复制
long block of data
;
long block of data
;
long block of data
;
long block of data
...

任何数据块都没有什么特别之处,但是我想根据它相对于分隔符的位置来提取一个块,并将其保存到一个新的文本文件中。例如,向下的第三个块将包括第二个和第三个分隔符(;)之间的所有内容。

如果任何人对如何做到这一点有任何建议,将不胜感激!

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-29 01:45:16

使用awk执行以下操作:

代码语言:javascript
运行
复制
awk -v num_block=2 -v RS='\n;\n' 'NR == num_block' /path/to/my/data.txt

这将显示编号为num_block的块。

说明:默认情况下,awk在行上运行。通过将RS重新定义为由单个分号组成的行,我们指示它对由RS分隔的文本块进行操作。

更新优化:你有一个“非常大的数据集”。一旦找到第N个块,就不需要解析输入文件,因此让我们添加一个对exit的调用。

代码语言:javascript
运行
复制
awk -v num_block=2 -v RS='\n;\n' 'NR == num_block { print; exit }' /path/to/my/data.txt
票数 2
EN

Stack Overflow用户

发布于 2021-04-29 01:41:17

你可以使用AWk。下面是提取第三个块的示例:

代码语言:javascript
运行
复制
cat <datasetfile> | awk '/^;/ { if (flag==1) exit; line++; } /^[^;]/ { if (line==2) { print $0; flag=1; } }'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67305169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档