通过分隔符读取整个文本而不是换行符

时间:2017-12-11 17:10:51

标签: bash

我需要在整个文本中通过指定的分隔符(' \ n \ n' - 双换行符)读取bash中的文本文件(不仅在单行中)。 E.g:

aaaaaaaaaa
aaaaaaaaaaa

bbbbbbbbbbb
bbbbbbbbb
bbbbbbbbbb

应该如上所述,而不是那样:

aaaaaaaaaa

aaaaaaaaaaa

bbbbbbbbbbb

bbbbbbbbb

bbbbbbbbbb

我尝试使用-d $' \ n \ n' (它只支持一个字符?)标志等但没有成功。

稍后完成

1 个答案:

答案 0 :(得分:0)

我会使用perl

perl -00 -ne 'do_something_with($_)' file

但是如果你需要使用bash试试这个(未经测试的)

paragraph=""
while IFS= read -r line; do
    if [[ -z $line ]]; then            # an empty line
        if [[ -n $paragraph ]]; then   # allow for consecutive empty lines
            do_something_with "$paragraph"
        fi
        paragraph=""
    else
        paragraph+="$line"
    fi
done < file

请注意,包含空格的行将注册为空