通过多个换行符拆分文件

时间:2013-11-26 10:07:35

标签: bash

假设您有以下输入文件

Some text. It may contain line
breaks.

Some other part of the text

Yet an other part of
the text

并且您希望迭代每个文本部分(由两个换行符分隔(\n\n)),以便 在第一次迭代中,我只会得到:

Some text. It may contain line
breaks.

在第二次迭代中,我会得到:

Some other part of the text

在最后一次迭代中,我会得到:

Yet an other part of
the text

我试过这个,但它似乎不起作用,因为IFS只支持一个字符?

cat $inputfile | while IFS=$'\n\n' read part; do
  # do something with $part
done

2 个答案:

答案 0 :(得分:2)

将awk与null RS一起使用:

awk '{print NR ":", $0}' RS= file
1: Some Text. It may contains line
breaks.
2: Some Other Part of the Text
3: Yet an other Part of
the Text

您可以清楚地看到您的输入文件现在有3条记录(每条记录在输出中打印有记录#)。

答案 1 :(得分:2)

这是纯粹bash中 anubhava 的解决方案:

#!/bin/bash

COUNT=1; echo -n "$COUNT: "
while read LINE
do
    [ "$LINE" ] && echo "$LINE" || { (( ++COUNT )); echo -n "$COUNT: " ;}
done