首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按块读取文件,而不是逐行读取文件?

按块读取文件,而不是逐行读取文件?
EN

Stack Overflow用户
提问于 2013-02-07 01:47:15
回答 2查看 2.8K关注 0票数 1

我有一个文本文件,如下所示:

代码语言:javascript
复制
[1] Header information Timestamp Text begins
Text continues
Text continues
Text continues

[2] Header information Timestamp Text begins
Text continues
Text continues

[3] Header information Timestamp Text begins
Text continues
Text continues
Text continues

我希望读取该文件,并单独处理每个条目(它们的行数在1到20或30行之间)。

有没有办法使用空行作为分隔符来遍历文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-07 01:51:22

答案是肯定的!

awk -vRS="" '...'会将空行视为行拆分器。

以您的示例为例,测试:

代码语言:javascript
复制
kent$  cat b.txt
[1] Header information Timestamp Text begins
Text continues
Text continues
Text continues

[2] Header information Timestamp Text begins
Text continues
Text continues

[3] Header information Timestamp Text begins
Text continues
Text continues
Text continues

kent$  awk -vRS="" '{print "==== new block here ===="}1' b.txt  
==== new block here ====
[1] Header information Timestamp Text begins
Text continues
Text continues
Text continues
==== new block here ====
[2] Header information Timestamp Text begins
Text continues
Text continues
==== new block here ====
[3] Header information Timestamp Text begins
Text continues
Text continues
Text continues
票数 4
EN

Stack Overflow用户

发布于 2013-02-07 02:24:35

这是一个纯bash解决方案:

代码语言:javascript
复制
{
    read -r block    # First line only
    while read -r; do
        if [[ $REPLY =~ ^$ ]]; then
            # Do what you like with the contents 
            # $block here, then ...
            block=""
        else
            block+="$REPLY"
        fi
    done
 } < file.txt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14735510

复制
相关文章

相似问题

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