Linux, コマンド · 1 min read · Sep 14, 2025

初心者のためのLinux Csplitコマンドの説明(6つの例)

Linuxのcsplitコマンドは、指定されたコンテキスト行やパターンに基づいてファイルを複数のセグメントに分割するための多用途なユーティリティです。サイズに基づいてファイルを分割するsplitコマンドとは異なり、csplitはユーザーが行番号、正規表現、またはその両方を使用して分割ポイントを定義できるため、予測可能な構造を持つテキストファイルの処理に最適です。このコマンドは、デフォルトのプレフィックスと数値サフィックスを持つ連続的な名前の出力ファイルを生成し、カスタマイズ可能です。この柔軟性は、ログファイルからセクションを抽出したり、設定ファイルを分割したり、他のスクリプトやアプリケーションによる処理のためにテキストデータを準備したりするタスクに特に便利です。

このチュートリアルでは、このツールの基本を説明し、使用方法を学びます。しかし、その前に、ここで言及されているすべてのコマンド/指示はUbuntu 24.04でテストされていることを言及する価値があります。

Linux Csplitコマンド

コマンドのmanページでは次のように定義されています:

csplit - コンテキスト行によって決定されたセクションにファイルを分割する

以下はその一般的な構文です:

csplit [OPTION]... FILE PATTERN...

csplitによって作成された個々の小ファイルは、xx00やxx01のような名前になります。以下の定義は、コマンドのmanページからのもので、より明確にするはずです:

出力ファイルの各部分をPATTERN(s)で区切り、ファイル'xx00', 'xx01', ...に出力し、各部分のバイト数を標準出力に出力します。

以下のQ&A形式の例は、csplitコマンドがどのように機能するかについて良いアイデアを提供するはずです。

Q1. 行数に基づいてファイルを分割するには?

ファイルに6行が含まれていて、そのファイルを3行目で分割する必要があるとします。これは、コマンドとファイル名の後に’3’をコマンドライン引数として渡すことで実行できます。

例えば、私たちのケースでは、file1には以下の行が含まれていました:

1       アジア  
2      アフリカ  
3      ヨーロッパ  
4   北アメリカ  
5   南アメリカ  
6     オーストラリア

そして、私たちが実行したコマンドは次のとおりです:

csplit file1 3

出力に生成された数字は、コマンドが生成したファイルのバイト数です。出力にはxx00とxx01という2つのファイルが生成されました。

これらのファイルの内容は、分割が行番号3で発生したことを確認しています。

Q2. 正規表現を使用してファイルを分割するには?

csplitコマンドで正規表現を使用することもできます。例えば、前のケースで、ツールにパターンをもう一度繰り返させたい場合、次のコマンドを使用できます:

csplit file1 3 {1}

この場合、3つの出力ファイルが生成されました:

正規表現を使用してファイルを分割

Q3. デフォルトの’xx’の代わりにカスタムプレフィックスを持つには?

デフォルトでは、csplitが出力するファイルには’xx’がプレフィックスとして付いています。しかし、希望すれば、-fコマンドラインオプションを使用してプレフィックスを変更できます。このオプションには新しいプレフィックスを入力として要求します。

例えば、次のコマンドは’htf’をプレフィックスとするファイルを生成します。

csplit file1 1 -f htf

Q4. エラーが発生した場合に出力ファイルを削除しないように強制するには?

csplitコマンドは、デフォルトでエラーが発生するとすぐに出力ファイル(作成された場合)を削除します。例えば、次のスクリーンショットは、最終的に出力ファイルが生成されなかったことを確認しています:

しかし、コマンドで- kオプションを使用することで、この動作を変更できます。例えば、同じコマンドを再度実行しましたが、このオプションを使用したため、今回は出力ファイルは削除されませんでした。

Q5. 入力パターンに一致する行を抑制するには?

csplitコマンドは、入力パターンに一致する行を抑制することもできます。問題のオプションは–suppress-matchedです。

例えば、次のコマンドはファイル(file1)を行2で分割します(xx00には行1が含まれ、xx11には残りの行が含まれます)。

csplit file1 2

しかし、行2を抑制したい場合は、次のコマンドを実行できます:

csplit --suppress-matched file1 2

Q6. デフォルトの2の代わりにカスタム桁数を使用するには?

プレフィックス自体と同様に、出力ファイル名のプレフィックスに続く桁数もカスタマイズ可能です。例えば、xx000やxx0001のような名前を持ちたい場合、-nコマンドラインオプションを使用して新しい桁数を指定することができます。

例えば:

csplit -n 1 file1 2

上記のコマンドは、xx0、xx1などのファイル名を生成します。

結論

平均的なLinuxコマンドラインユーザーは、日常的に分割を必要としないかもしれませんが、知っておくべき重要なユーティリティです。ここでは、ほとんどの基本的な例とコマンドラインオプションをカバーしました。試してみて、ツールのmanページにアクセスしてさらに学んでください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。