【发布时间】:2015-05-11 21:58:47
【问题描述】:
我想知道是否可以逐块读取文件直到特定分隔符(即某个字符串或其他内容),而不是逐行读取(就像“读取”那样)。
input.txt 包含:
text1
text2
NEXT
text3
NEXT
text4
text5
每个文本部分都应该保存在一个特定的文件中(text1+text2 // text3 // text4+text5)
我在编辑 IFS 时玩了一会儿,但不幸的是没有成功。
【问题讨论】:
我想知道是否可以逐块读取文件直到特定分隔符(即某个字符串或其他内容),而不是逐行读取(就像“读取”那样)。
input.txt 包含:
text1
text2
NEXT
text3
NEXT
text4
text5
每个文本部分都应该保存在一个特定的文件中(text1+text2 // text3 // text4+text5)
我在编辑 IFS 时玩了一会儿,但不幸的是没有成功。
【问题讨论】:
您可以将gnu-awk 与自定义记录分隔符一起使用:
awk -v RS='\nNEXT\n' '{sub(/\n$/, ""); print "<" $0 ">"}' file
<text1
text2>
<text3>
<text4
text5>
<...> 中的每个块都是一条记录。
【讨论】:
awk -v RS='\nNEXT\n' '{sub(/\n$/, ""); print $0 > "file" NR }' file
print $0 > "file" NR ".txt" 更改为print > ("file" NR ".txt") 是为了简洁,更重要的是,为了便于携带。 NEXT 出现在输出中的唯一方法是它没有被换行符包围,或者您没有使用 GNU awk。