GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでコマンドをカット

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.txt
245: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 いくつかの制限があります。区切り文字として複数の文字を指定することはサポートされておらず、複数の区切り文字もサポートされていません。

ご質問やご意見がございましたら、お気軽にコメントをお寄せください。


Linux
  1. Linuxmvコマンド

  2. Linux での貼り付けコマンドの例

  3. Linux での cut コマンドの例

  1. Linuxduコマンド

  2. Linuxipコマンド

  3. Linuxcdコマンド

  1. Linuxカットコマンドを6つの例で説明

  2. Linuxifconfigコマンド

  3. Linuxタイムコマンド