次の行を含むテキストファイルがあります。
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修飾子()を知りません
?
。は特殊文字ではないのでエスケープする必要は.*;
ありません。[^;]*;
.*?\;
;