假设您有以下输入文件
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
答案 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