巨大な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
これは必須文字ではないことを\?
意味します。,
存在しない場合でも、まだ一致があります。