我有一个包含以下数据的文本文件。
headline
text1
text2
text3
footnote
headline
text1
text2
text3
footnote
我想将每个标题和相应的脚注(包括)之间的所有内容添加到数组索引中。
sed
似乎在获取我需要的行方面工作正常。
sed -n '/headline/,/footnote/p' text.txt
但是,将它们添加到数组中并不是很好,因为每行都会添加到自己的数组索引中。我试图找到一种方法,将每个标题添加到单个索引中,文本和后面的1个脚注。这可能吗?
declare -a array
array=($(sed -n '/headline/,/footnote/p' text.txt))`
PS。我没有必要使用sed
。也欢迎AWK
(或其他)解决方案。
答案 0 :(得分:0)
你可以像这样使用while循环:
array=()
while read -r -d '' chunk; do
array+=("$chunk")
done < <(awk -vRS='\n\n' -vORS='\0' '{print $0}' text.txt)
基本思想是使用awk
逐段读取输入,然后输出由空字符分隔的段落。我们使用awk
读取read
的输出,每次都停在空字符处,然后将其附加到数组中。