Linux コマンド sed の正規表現で終了していない 's' コマンドエラーが発生します。

Linux コマンド sed の正規表現で終了していない 's' コマンドエラーが発生します。

Bashスクリプトを使用して次のsed式を実行するとき

t=$(sed -n "s/^([0-9]+\.){2,2}(\*|[0-9]+)(\-.*){0,1}$/p" ./apps/core-website/settings/website.config)

次のエラーが発生します。

sed: -e expression #1, char 41: unterminated `s' command

答え1

s//エラーメッセージは正しいです。コマンドを終了していません。パターンの後にはオプションで、等の修飾s/pattern/replacement/子が来なければなりませんg。すでに持っているので置き換えることはできません。ips/pattern/p

また、拡張正規表現(ERE)モードを使用していることも知っておく必要がありますが、sedこれを行うというメッセージが表示されないため、正規表現を前提としています。これに使用されますsed -E

関連情報