Linux Cutコマンドの使い方ガイド

Linux Cutコマンドの使い方ガイド

Linuxのcutコマンドは、テキスト処理に不可欠なユーティリティで、ファイルの各行またはパイプ入力から特定のセグメントを抽出するように設計されています。このコマンドは元のファイルを変更するのではなく、データを読み取り、必要な部分を標準出力に表示します。このガイドでは、Linuxのcutコマンドの機能を詳しく説明し、実用的な例を用いてその使い方を説明します。

cutコマンドの探索

このcutコマンドは、構造化テキストを扱うすべての人にとって非常に便利で、Unix系環境における効率的なデータ操作と抽出を容易にします。バイト位置、文字位置、区切り文字、またはフィールドに基づいて行の一部を抽出することで、cutはシェルスクリプトやコマンドライン操作におけるデータのフィルタリングと整理に非常に役立ちます。その用途は、CSVファイルからの特定の列の取得から不要な文字の削除、ログの分析まで多岐にわたります。cutはファイルに直接使用されることが多いですが、パイプラインで利用することで、他のコマンドの出力とシームレスに連携することもできます。

cutコマンドの基本構文

cutコマンドは、オプションに続いてファイル名を指定するというシンプルなコマンドです。構文は以下のとおりです。

cut [OPTIONS] [FILE]

この構造では、OPTIONS によって cut コマンドの動作が指定されます。フィールド区切り文字(カンマなど)の選択、特定のフィールドの選択、範囲の設定、区切り文字のない行の除外など、様々な機能を使用できます。ファイルが指定されていない場合、cut は標準入力から読み込みます。また、複数のファイルを指定すると、処理時にそれらを結合したエンティティとして扱います。

よく使われるオプション

cutコマンドには、抽出するテキストセグメントを正確に特定するための様々なオプションがあります。以下に、最もよく使用されるオプションをいくつか示します。

  • -fまたは–fields=LIST : 指定された区切り文字に基づいて特定のフィールドを選択できます。
  • -bまたは–bytes=LIST : 各行から指定されたバイトを抽出します。
  • -cまたは–characters=LIST : 各行から特定の文字を取得します。
  • -dまたは–delimiter : デフォルトのタブの代わりにカスタム区切り文字を設定します。
  • –complement : 指定されたフィールド、バイト、または文字を除くすべてを出力します。
  • -sまたは–only-delimited : 区切り文字がない行をスキップします。このような行はデフォルトで含まれます。
  • –output-delimiter : 入力区切り文字とは異なる出力区切り文字を選択できます。

、、およびオプションは-f、抽出対象を定義するためにリストを使用します。以下の項目を指定できます。-b-c

  • 2 のような単一の数字。
  • 1, 3, 5 のように、カンマで区切られた複数の数字。
  • 2-4 のような範囲 (2 から 4 までの値を抽出)。
  • N-N 位置から最後までの抽出を示します。
  • -M始動から位置 M までの抽出を示します。

Linuxでcutコマンドを利用する

cutコマンドの機能を説明するために、実際にいくつかの例を実行してみましょう。まず、echoコマンドを使って「mte.csv」というサンプルファイルを作成します。

echo -e "empID, empName, empDesig\n101, Anees, Author\n102, Asghar, Manager\n103, Damian, CEO" > mte.csv

エコーコマンド

次に、cat コマンドを使用してファイルの内容を確認します。

cat mte.csv

ファイルデータを表示

cut コマンドはファイル自体を変更せずに指定された出力を表示するだけであることに注意してください。

文字によるデータの抽出

位置によって文字を抽出するには、-ccut コマンドのオプションを使用します。

cut -c 1, 8 mte.csv

このコマンドは、各行から最初の文字と 8 番目の文字を抽出します。

文字ごとにカット

指定された範囲内の文字を抽出するには、次のコマンドを適用します。

cut -c 1-8 mte.csv

これは、各行の位置 1 から 8 から文字を抽出します。

範囲でカット

バイト単位で抽出

特定のバイトを抽出するには、-bcut コマンドのオプションを使用します。

cut -b 1-3 mte.csv

このコマンドは、ファイルの各行から最初の 3 バイトを抽出しますmte.csv

バイト単位でカット

フィールド(列)による抽出

ファイルからフィールド全体を抽出するには、オプションを指定した cut コマンドを使用し-fます-d

cut -d', ' -f2 mte.csv

このコマンドでは、-d', '区切り文字としてコンマを指定し、-f2cut が各行から 2 番目のフィールドを抽出することを示します。

フィールドごとにカット

カットにカスタム区切り文字を実装する

cut はデフォルトでタブを区切り文字として使用しますが、フィールドが別の文字で区切られている場合は、-d適切な文字を指定してください。例えば、スペースで区切られた文から5番目の単語を抽出するには、次のようにします。

echo "Hey! Geeks Welcome to Maketecheasier.com" | cut -d ' ' -f 5

カスタム区切り文字で切り取り

抽出時に特定のフィールドを除外する

ファイルからテキストを抽出する際に、--complementcutコマンドにオプションを指定することで、特定のフィールドを省略することができます。このオプションは、指定されたフィールドを除くすべてのフィールドを出力することを指定します。

cut -d', ' -f1 mte.csv --complement

このコマンドは最初の列をスキップし、残りのコンテンツを返します。

補数でカット

デフォルトの出力区切り文字の変更

デフォルトでは、フィールドを抽出する際に、cutコマンドは入力区切り文字をそのまま出力に残します。ただし、以下の--output-delimiterオプションを使用することで、出力区切り文字を変更できます。

cut -d', ' -f1-3 --output-delimiter='-' mte.csv

このコマンドは、出力の区切り文字としてハイフンを使用します。

カスタム出力区切り文字

cutと他のLinuxコマンドの組み合わせ

cutコマンドは、パイプライン記号「|」を使用して他のLinuxコマンドと組み合わせて使用​​することもできます。例えば、次のコマンドは、whoコマンドの各出力行から最初の5文字を​​抽出します。

who | cut -c 1-5

誰とカット

別の例として、cut コマンドを head コマンドと一緒に使用して、「mte.csv」の最初の 2 行を表示し、empName フィールドと empDesig フィールドのみを抽出できます。

head -n 2 mte.csv | cut -d ', ' -f2, 3

頭を切る

Linux の cut コマンドで不規則なデータ形式を扱う

cut コマンドは、区切り文字(カンマやタブなど)が統一されたフォーマットのデータの扱いに優れています。しかし、スペースの一貫性がなかったり、区切り文字が混在しているファイルの場合、cut のみでは満足のいく結果が得られない可能性があります。このような状況に対処するには、trや などのコマンドを使用して事前にデータをクリーンアップしsed、 cut が適切な部分を効果的に抽出できるようにすると効果的です。

余剰スペースの管理

フィールドがさまざまなスペースで区切られている「mteData.txt」という名前のファイルを考えてみます。

cat mteData.txt

サンプルデータを表示

cut は単一の区切り文字を想定しているため、trcut を適用する前にスペースを正規化するために次のようにします。

cat mteData.txt | tr -s ' ' | cut -d ' ' -f1-2

このコマンドは「mteData.txt」を処理し、 を使用して複数のスペースを 1 つのスペースに置き換えtr、最初の 2 つのフィールドを抽出します。

Trでカット

混合区切り文字の管理

ファイル内でスペースとカンマの組み合わせが使用されている場合は、 でフォーマットを正規化しますsed。例えば、「mteData1.txt」というファイルには、以下の内容が含まれます。

cat mteData1.txt

サンプルコンテンツを表示

cut を使用してsedすべてのスペースをコンマに変換し、最初のフィールドと 3 番目のフィールドを抽出します。

sed 's/ /, /g' mteData1.txt | cut -d ', ' -f1, 3

Sedでカット

結論

この記事では、ファイルやパイプ入力からデータを抽出するための重要なツールであるLinuxのcutコマンドの機能について説明しました。シンプルな構文で、指定した区切り文字に基づいて文字、バイト、またはフィールドを簡単に取得できます。さらに、cutコマンドをtr、、、などの他のユーティリティsedと組み合わせてhead、クリーンでないデータを管理し、より効率的な出力を実現する方法も紹介しました。CSVファイルの処理、ログの分析、データのクレンジングなど、Unix系環境でのテキスト処理において、cutコマンドは欠かせないツールです。

よくある質問

1. Linux の cut コマンドの主な目的は何ですか?

Linuxのcutコマンドは、主にファイルや他のコマンドの出力から特定のテキストセクションを抽出するために使用されます。これにより、ユーザーは区切り文字、バイト位置、または文字位置に基づいてデータを効率的に操作およびフォーマットできます。

2.cut コマンドを他の Linux コマンドと組み合わせることはできますか?

はい!cutコマンドは、パイプライン記号(|)を使用して他のLinuxコマンドとシームレスに統合できます。これにより、強力なデータ処理が可能になり、さまざまなコマンドからの出力をフィルタリングおよびフォーマットできます。

3.cut コマンドを使用するときにカスタム区切り文字を指定するにはどうすればよいですか?

オプションに続けて希望する区切り文字を指定することで、カスタム区切り文字を指定できます-d。例えば、カンマを区切り文字として使用する場合は、 を使用します-d', '

出典と画像

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です