Linuxでコマンドラインを操作していると、ファイルを複数の部分に分割する必要がある場合があります。これを行う方法をすでに探している場合、または単にこれを行う方法を知りたい場合は、 csplitと呼ばれるツールが存在することを知って喜ぶでしょう。 -これはこの目的のために構築されています。
このチュートリアルでは、このツールの基本について説明するとともに、その使用方法を学習します。ただし、その前に、ここで説明するすべてのコマンド/命令がUbuntu16.04LTSでテストされていることを言及する価値があります。
LinuxCsplitコマンド
コマンドのマニュアルページでの定義は次のとおりです。
csplit - split a file into sections determined by context lines
その一般的な構文は次のとおりです。
csplit [OPTION]... FILE PATTERN...
csplitによって作成された個々の小さなファイルには、xx00やxx01などの名前が付いています。次の定義(コマンドのマニュアルページから抜粋)により、状況がより明確になります。
Output pieces of FILE separated by PATTERN(s) to files 'xx00', 'xx01', ..., and output byte
counts of each piece to standard output.
次のQ&Aタイプの例は、csplitコマンドがどのように機能するかについての良いアイデアを与えるはずです。
Q1。行数に基づいてファイルを分割するにはどうすればよいですか?
ファイルに6行が含まれていて、要件がそのファイルを3行目で分割しているとすると、コマンドとファイル名の後にコマンドライン引数として「3」を渡すことでこれを行うことができます。
たとえば、この場合、file1には次の行が含まれていました。
1 Asia
2 Africa
3 Europe
4 North America
5 South America
6 Australia
そして、これが私たちが実行したコマンドです:
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を強制するにはどうすればよいですか?
csplitコマンドは、デフォルトで、エラー状況が発生するとすぐに出力ファイル(作成されている場合は任意)を削除します。たとえば、次のスクリーンショットは、最終的に出力ファイルが生成されなかったことを確認しています。
ただし、必要に応じて、 -kを使用してこの動作を変更できます。 コマンドのオプション。たとえば、同じコマンドが再度実行されましたが、このオプションを使用すると、今回は出力ファイルが削除されませんでした。
Q5。入力パターンに一致する行を抑制する方法は?
csplitコマンドには、入力パターンに一致する行を抑制するオプションもあります。問題のオプションは-suppress-matched 。
たとえば、次のコマンドは2行目でファイル(file1)を分割します(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コマンドラインユーザーは日常的にcsplitを必要としないかもしれませんが、少なくとも知っておくべき重要なユーティリティであることは間違いありません。ここでは、基本的な例とコマンドラインオプションのほとんどについて説明しました。それらを試してから、ツールのマニュアルページにアクセスして詳細を確認してください。