sed:これはコンマまたはそれと一致しますが、同時に両方は一致しません。

sed:これはコンマまたはそれと一致しますが、同時に両方は一致しません。

巨大なmysqlダンプがあり、sedを使用して不要な行を削除しています(テーブルから削除するよりもはるかに高速です)、ダンプの各行は次の形式です。

 INSERT INTO table_name VALUES ("somevalue", 0), ("anothervalue", 90), ("nospaces", 67), ("another", 0) ... ;

整数値が 0 の行のみが必要なので、次の式を使用します。

 sed -i 's/, ("[^ ]*", [1-9][0-9]*)//g' dump.sql

しかし、これは最初の行と一致しません(式のコンマを参照)。

ベストアンサー1

,前者に頼るのではなく、()後者に頼ることをお勧めします\?。とにかく、スペースが一つなのか、複数の個人は重要ではない。同様のことがあなたにも役立ちます:

sed -i 's/("[^ ]*", [1-9][0-9]*),\?//g; s/,\s*;/;/' dump.sql

これは必須文字ではないことを\?意味します。,存在しない場合でも、まだ一致があります。

おすすめ記事