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