sed: -e 式 #1、文字 35: 未終了の 's' コマンド

sed: -e 式 #1、文字 35: 未終了の 's' コマンド

次の行を含むテキストファイルがあります。

SET @@GLOBAL.GTID_PURGED='abae51b1-e1dc-11e8-bfd0-5665b72f6318:1-12559259';

sedを使ってその行を削除したいです。文字列(たとえばGTID_PURGED)を一致させることができますが、セミコロン()の前の残りの文字列と一致しないため、部分的に機能するようにしました;これは私の正規表現です。:

(SET @@GLOBAL.GTID_PURGED=.*?\;)

これはエラーを生成する完全なコマンドです。

sed -i 's/(SET @@GLOBAL.GTID_PURGED=.*?\;)/' test.sql

ベストアンサー1

この行を削除したい

s/pattern/replacement/sedパターンを置換に置き換えるコマンドです。しかし、あなたは代替品を提供しません。
行を削除するには必要ですsed -i '/pattern/d'

追加のヒント:

  • で拡張正規表現を使用しない限り、sed括弧をエスケープする必要があります。削除コマンドの場合、角かっこは役に立たないので削除する必要があります。
  • posix正規表現は、non-greedy修飾子()を知りません?。は特殊文字ではないのでエスケープする必要は.*;ありません。[^;]*;.*?\;;

おすすめ記事