LinuxおよびUnixシステムでは、テキストファイルの処理とフィルタリングを可能にする多くのユーティリティを利用できます。 cut
は、指定されたファイルまたはパイプされたデータから行の一部を切り取り、その結果を標準出力に出力できるコマンドラインユーティリティです。区切り文字、バイト位置、文字で行の一部を切り取るために使用できます。
この記事では、cut
の使用方法を説明します。実用的な例と最も一般的なオプションの詳細な説明によるコマンド。
cutコマンドの使用方法#
cut
の構文コマンドは次のとおりです。
cut
を使用するかどうかを指示するオプション選択した部分を切り取るときの区切り文字、バイト位置、または文字の行は次のとおりです。
使用できるのは、上記のオプションの1つだけです。
その他のオプションは次のとおりです。 :
-
-d
(--delimiter
)-デフォルトの “の代わりに使用される区切り文字を指定しますTAB」区切り文字。 -
--complement
-選択を補完します。このオプションを使用すると、cut
はすべてのバイト、文字、またはse以外のフィールド選択されました。 -
-s
(--only-delimited
)-デフォルトではcut
区切り文字を含まない行を出力します。このオプションを使用すると、cut
は区切り文字を含まない行を出力しません。 -
--output-delimiter
-デフォルトの動作cut
の目的は、入力区切り文字を出力区切り文字として使用することです。このオプションを使用すると、別の出力区切り文字列を指定できます。
cut
コマンドは、0個以上の入力ファイル名を受け入れることができます。 FILE
が指定されていない場合、またはFILE
が-
の場合、cut
は標準入力から読み取ります。
-f
に渡されるLIST
引数
、-b
、および-c
オプションは、整数、コンマで区切られた複数の整数、整数の範囲、またはコンマで区切られた複数の整数範囲にすることができます。 。各範囲は、次のいずれかになります。
-
N
1から始まるN番目のフィールド、バイト、または文字。 -
N-
N番目のフィールド、バイトまたは文字から行末まで。 -
N-M
N番目からM番目のフィールド、バイト、または文字へ。 -
-M
最初からM番目のフィールド、バイト、または文字へ。
フィールドで切り取る方法#
切り取るフィールドを指定するには、-f
オプションを指定してコマンドを呼び出します。指定しない場合、デフォルトの区切り文字は「TAB」です。
以下の例では、次のファイルを使用します。フィールドはタブで区切られています。
たとえば、使用する1番目と3番目のフィールドを表示するには:
または、1番目から4番目のフィールドに表示する場合:
区切り文字に基づいて切り取る方法#
区切り文字に基づいて切り取るには、-d
オプションの後に、使用する区切り文字を続けます。
たとえば、「:」を区切り文字として使用して1番目と3番目のフィールドを表示するには、次のように入力します。
任意の1文字を区切り文字として使用できます。次の例では、スペース文字を区切り文字として使用し、2番目のフィールドを出力しています。
選択を補完する方法#
選択フィールドリストを補完するには、--complement
オプションを使用します。これにより、-f
オプションで選択されていないフィールドのみが印刷されます。
次のコマンドは、1番目と3番目を除くすべてのフィールドを印刷します。
出力区切り文字の指定方法#
出力区切り文字を指定するには、
オプション。たとえば、出力区切り文字を_
に設定するには、次を使用します。
バイトと文字でカットする方法#
先に進む前に、バイトと文字を区別しましょう。
1バイトは8ビットであり、表現できます。 256の異なる値。 ASCII標準が確立されたとき、英語での作業に必要なすべての文字、数字、記号が考慮されていました。 ASCII文字テーブルは128文字で、各文字は1バイトで表されます。コンピューターがグローバルにアクセス可能になり始めたとき、テクノロジー企業はさまざまな言語の新しい文字エンコードを導入し始めました。 256文字を超える言語の場合、単純な1対1のマッピングは不可能でした。これにより、ドキュメントの共有やWebサイトの閲覧などのさまざまな問題が発生し、世界のほとんどの書記体系を処理できる新しいUnicode標準が必要でした。 UTF-8は、これらの問題を解決するために作成されました。 UTF-8では、すべての文字が1バイトで表されるわけではありません。文字は1バイトから4バイトで表すことができます。
-b
(--bytes
)オプションは、コマンドに次のように指示します。指定されたバイト位置で指定された各行からセクションを切り取ります。
次の例では、2バイトを使用するü
文字を使用しています。
5番目のバイトを選択します:
5番目、9番目、および13番目のバイトを選択します:
1バイト目から5バイト目までの範囲を選択します:
この記事の執筆時点では、GNUcoreutilsにバンドルされているcut
のバージョンにはありません。文字でカットするオプション。 -c
オプションを使用する場合、cut
は-b
オプションを使用する場合と同じように動作します。
カット例#
cut
コマンドは通常、配管を介して他のコマンドと組み合わせて使用されます。次にいくつかの例を示します。
すべてのユーザーのリストを取得する#
getent passwd
コマンドの出力が
、:
を区切り文字として使用して最初のフィールドを出力します。
出力には、すべてのシステムユーザーのリストが表示されます。
最も頻繁に使用される10個のコマンドを表示します#
次の例では、cut
が使用されていますhistory
コマンド出力の各行から最初の8バイトを削除します。
結論#
cut
コマンドは、指定されたファイルの各行または標準入力から選択されたフィールドを表示するために使用されます。
非常に便利ですが、cut
にはいくつかの制限があります。区切り文字として複数の文字を指定することはサポートされておらず、複数の区切り文字もサポートされていません。