我一直在試圖弄清楚如何在bash腳本中使用grep
來匹配從模式到文件末尾。該文件並不總是相同的行數,並不總是[A-Za-z0-9]
。我試圖從基於平面文件的目錄遷移到數據庫。從模式匹配到bash中的文件結尾
文件摘錄:
,姓:DOE,約翰 ID:XXXXXXXX ...
案例說明:
這個 「人」 不存在!
請不要加他。
謝謝。
我需要抓住從'案例說明'到文件末尾的所有內容。由於沒有實際的EOF字符,我似乎無法找到任何幫助。
想法?
我一直在試圖弄清楚如何在bash腳本中使用grep
來匹配從模式到文件末尾。該文件並不總是相同的行數,並不總是[A-Za-z0-9]
。我試圖從基於平面文件的目錄遷移到數據庫。從模式匹配到bash中的文件結尾
文件摘錄:
,姓:DOE,約翰 ID:XXXXXXXX ...
案例說明:
這個 「人」 不存在!
請不要加他。
謝謝。
我需要抓住從'案例說明'到文件末尾的所有內容。由於沒有實際的EOF字符,我似乎無法找到任何幫助。
想法?
的awk
腳本可能會更容易:
awk '/^Case Notes:$/ { matched = 1 } matched { print }'
或者,如果你不希望看到的Case notes:
字符串本身,扭轉這種局面:
awk 'matched { print } /^Case Notes:$/ { matched = 1 }'
sed -n '/^Case notes:/,$p' file >newfile
純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
幾年晚,但你可以使用
more +"Case notes:" file
慣用awk
的解決辦法是從模式(含)至文件末尾的
awk '/^Case Notes:$/,0'
打印。
謝謝。這幾乎做到了。我不得不將它修改爲:awk'/ ^案例註釋:。* $/{matched = 1}匹配{print}'但它工作得很好!謝謝。 – Colin