
次の構造のファイルがあります。現在のセクション全体を印刷したいです。入力は他のタイトルまたはキーワードです。
## DN [TITLE] KEYWORD,KEYWORD
## text line
## another text line
## DN [TITLE] ends here
この記事を検討してください
some text
## DN [Opcon] bash,recources
## text line
## another text line
## DN [Opcon] ends here
more text
ユーザーがOpcon
、bash
またはを指定すると、recources
このセクションが端末に印刷されます。
出力を受け取る
## DN [Opcon] bash,recources
## text line
## another text line
## DN [Opcon] ends here
検索パターンのために、以下のptn
パターンマッチングを構築しました## DN [TITLE] KEYWORD,KEYWORD
。
dpn='[[:space:]]*([#;!]+|@c|//)[[:space:]]DN[[:space:]]\[.*\]'
kpn='[[:space:]][^,]+(,[^,]+)*'
ptn="^($dpn)($kpn)?$"
事前に試みた。awk
dn_ere='^[[:space:]]*([#;!]+|@c|//)[[:space:]]DN[[:space:]]\[.*\]'
beg_ere="${dn_ere} ${keyword}$"
end_ere="${dn_ere} ends here$"
awk -v begpn="$beg_ere" -v endpn="$end_ere" \
'$0 ~ begpn { insc=1; next }
$0 ~ endpn { insc=0; print "" }
insc { print }' "$efile"
最初のキーワードに一致するのか、2番目のキーワードに一致するのかわからないため、マッチングに問題がありますkeyword
。beg_ere