2011-09-19 66 views
4

我一直在試圖弄清楚如何在bash腳本中使用grep來匹配從模式到文件末尾。該文件並不總是相同的行數,並不總是[A-Za-z0-9]。我試圖從基於平面文件的目錄遷移到數據庫。從模式匹配到bash中的文件結尾

文件摘錄:

,姓:DOE,約翰 ID:XXXXXXXX ...

案例說明:

這個 「人」 不存在!

請不要加他。

謝謝。

我需要抓住從'案例說明'到文件末尾的所有內容。由於沒有實際的EOF字符,我似乎無法找到任何幫助。

想法?

回答

4

awk腳本可能會更容易:

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

或者,如果你不希望看到的Case notes:字符串本身,扭轉這種局面:

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

謝謝。這幾乎做到了。我不得不將它修改爲:awk'/ ^案例註釋:。* $/{matched = 1}匹配{print}'但它工作得很好!謝謝。 – Colin

3
sed -n '/^Case notes:/,$p' file >newfile 
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 
1

幾年晚,但你可以使用

more +"Case notes:" file 
3

慣用awk的解決辦法是從模式(含)至文件末尾的

awk '/^Case Notes:$/,0' 

打印。