行全体を置き換えて最後の選択文字を置き換えるには、正規表現が必要です。

行全体を置き換えて最後の選択文字を置き換えるには、正規表現が必要です。

これは些細な作業のようですが、とても分からなくて聞いてみることにしました。行全体を置き換える必要がありますが、最後の文字はオプションです。たとえば、私は以下が欲しい。
abcdto beefghしかし
abcd,to beefgh,
このような正規表現をどのように作成できますか?オプションの文字は逆に参照できないようです。つまり、次のようになります。s/.*\(,\)?$/efgh\1動作しません(試しました:)明確にするために、行は任意の長さの任意の文字です。私の場合、唯一の条件は、置換後の行末にカンマを保持するか、行がカンマで終わらない場合は削除することです。

ベストアンサー1

もう一つ:

$ echo -e "abcd\nabcd," | sed 's/.*\($\|,\)/efgh\1/'
efgh
efgh,

これは、キャプチャグループの$行末またはカンマと一致します。,

おすすめ記事