いくつかのパターンの前のいくつかのテキストを削除したいと思います。たとえば、
VAR="This is a test script text and real script text."
PATTERN="test "
私が望む出力は次のとおりです。
NEW_VAR="script text and real script text."
ベストアンサー1
使用しているシェルがタイプパラメータ拡張をサポートしている場合は、次のことを行う必要があります${WORD##*STR}
。
printf '%s\n' "${VAR##*$PATTERN}"
新しい変数に保存するには、コマンド置換トリックを使用する$(..)
か、printf
書式設定された文字列を新しい変数に保存するために使用される独自の機能を使用します。
printf -v NEW_VAR '%s' "${VAR##*$PATTERN}"
printf '%s\n' "$NEW_VAR"
交換にシェルを使用することsed
や、外部のユーティリティを分岐するよりも効率的ですawk
。
${PARAMETER##PATTERN}
このフォームは、一致しようとしている説明されたパターンから削除されます。文字列の始まり。オペレータは、
##
最長のテキスト一致を削除しようとします。