課題解決Tips

正規表現でテキストファイルを分割する

salmoncode
記事内に商品プロモーションを含む場合があります。

はじめに

過去ブログのデータを移行しようとエクスポートしたら、1 つの MT ファイルとして出力されてしまいました。
仕方ないので、いい感じにファイルを分割したいと思ったのですがコードを書くのは面倒です…

そこで調べてみたところ、csplitというコマンドで正規表現による分割ができるようですね。
ちょっと使い方に癖があったのでメモしておきます。

csplit コマンドのインストール

まず、Mac の csplit コマンドは Linux のそれと仕様が違います。
ググって出てきた使い方だとうまく動かないという罠があります。

なので、まずは gnu 版をインストールしましょう。

基本的なコマンドは以下の通りです。

csplit コマンドの使用例

例えば以下のような`sample.txt`があったとします。

ここで以下のコマンドを打つと、2行目の「bbb」で分割されます。

元ファイル 5 行目の`bbb`でも分割したい場合はcounterを設定します。

つまり、ヒットしたパターンの行の直前で分割されるようですね。
ちなみに、ヒットした行全て分割したい場合は以下のようにします。

おわりに

シンプルに指定できて便利なコマンドですね。
こういったテキスト処理系は魔術にならない程度にコマンドを駆使して高速化しましょう。

スポンサーリンク
書いた人
サーモン
サーモン
著者(ソフトウェアエンジニア)
こんにちは、ソフトウェアエンジニアのサーモンです。 情報系大学院を卒業後、都内IT企業に従事しています。プログラミング歴は10年以上になります。
記事URLをコピーしました