我有一个文本文件,如下所示:
[1] Header information Timestamp Text begins
Text continues
Text continues
Text continues
[2] Header information Timestamp Text begins
Text continues
Text continues
[3] Header information Timestamp Text begins
Text continues
Text continues
Text continues我希望读取该文件,并单独处理每个条目(它们的行数在1到20或30行之间)。
有没有办法使用空行作为分隔符来遍历文件?
发布于 2013-02-07 01:51:22
答案是肯定的!
awk -vRS="" '...'会将空行视为行拆分器。
以您的示例为例,测试:
kent$ cat b.txt
[1] Header information Timestamp Text begins
Text continues
Text continues
Text continues
[2] Header information Timestamp Text begins
Text continues
Text continues
[3] Header information Timestamp Text begins
Text continues
Text continues
Text continues
kent$ awk -vRS="" '{print "==== new block here ===="}1' b.txt
==== new block here ====
[1] Header information Timestamp Text begins
Text continues
Text continues
Text continues
==== new block here ====
[2] Header information Timestamp Text begins
Text continues
Text continues
==== new block here ====
[3] Header information Timestamp Text begins
Text continues
Text continues
Text continues发布于 2013-02-07 02:24:35
这是一个纯bash解决方案:
{
read -r block # First line only
while read -r; do
if [[ $REPLY =~ ^$ ]]; then
# Do what you like with the contents
# $block here, then ...
block=""
else
block+="$REPLY"
fi
done
} < file.txthttps://stackoverflow.com/questions/14735510
复制相似问题