在bash中从模式匹配到文件末尾

时间:2011-09-19 18:07:47

标签: regex bash eof

我一直在试图弄清楚如何在bash脚本中使用grep来匹配模式到文件末尾。该文件每次都不总是相同的行数,并不总是[A-Za-z0-9]。我正在尝试从基于平面文件的目录迁移到数据库。

文件摘录:

First, Last: Doe, John
ID: xxxxxxxx
...

Case Notes:

This "person" does not exist!  
Please do not add him. 
Thanks.

我需要抓取从Case Notes:到文件末尾的所有内容。我似乎无法找到任何帮助,因为没有真正的EOF角色。

想法?

4 个答案:

答案 0 :(得分:6)

awk脚本可能更容易:

awk '/^Case Notes:$/ { matched = 1 } matched'

或者如果您不想看到Case notes:字符串本身,请将其反转:

awk 'matched; /^Case Notes:$/ { matched = 1 }'

答案 1 :(得分:3)

sed -n '/^Case notes:/,$p' file >newfile

答案 2 :(得分:1)

几年后你可以使用

more +"Case notes:" file

答案 3 :(得分:0)

bash可以做到

declare -i tf=0
while read -r line
do
   case "$line" in
     *"Case notes"* ) tf=1;
   esac
   [[ $tf -eq 1 ]] && echo "$line"
done < file