タイトルが十分に説明的でない場合は申し訳ありませんが、要約する方法が本当にわかりません。提案は大歓迎です。特定のテーブル (キャッシュを含む) にデータを挿入する sql ファイルの行を照合するための便利な正規表現を作成しました。こんなふうになります:
(--\s--\sDumping\sdata\sfor\stable\s`(cache_\w+|cache)`.*?)(?=(--\n--.+Table\sstructure\sfor\stable\s`.+`.*--))
だから今、私はこのようなファイルを持っているとき:
--
-- Table structure for table `cache_content`
--
something
--
-- Dumping data for table `cache_content`
--
INSERT INTO `cache_content` etc.
--
-- Table structure for table `cache`
--
something
--
-- Dumping data for table `cache`
--
INSERT INTO `cache` etc.
--
-- Table structure for table `notcache`
--
something
--
-- Dumping data for table `notcache`
--
これらのテーブルへのすべての挿入に一致し、を使用してそれらを削除したいと思います (これらはキャッシュのあるテーブルであるため) sed
。具体的には、これを行うための簡単な bash スクリプトを作成しました。
REGEX="(--\s--\sDumping\sdata\sfor\stable\s\`(cache_\w+|cache)\`.*?)(?=(--\n--.+Table\sstructure\sfor\stable\s\`.+\`.*--))"
sed -i "s/${REGEX}//g" $1
問題は、私の正規表現テスターでは機能することですが、 ではまったく機能しませんsed
。sed
ファイルをまったく変更しないだけで、私は困惑しています。行ベースの記事をどこかで読みsed
ましたが、これが問題なのか、それとも別の何かでしょうか?
追加#1:それが不可能な場合sed
、良い代替手段は何ですか?それを行うsedのようなものはありますか?