cutコマンドは、Unixのcutユーティリティを使用して標準の入力ストリームまたはデータファイルのセクションを切り出すために使用されます。これはGNUCoreutilsパッケージとBSDベースシステムの一部であるため、デフォルトですべてのLinuxおよびBSDシステムで利用できます。 Unixのcutコマンドを使用すると、バイト位置、文字、または「-」や「:」文字などの区切り文字で区切られたフィールドに基づいてセクションを切り取ることができます。このガイドでは、厳選された一連の例を使用して、Linuxのcutコマンドの実用的な紹介を提供します。この投稿を読んで、直接体験してみてください。
UnixでのLinuxカットコマンドの例
私たちの専門家は、このガイドを新しいLinuxユーザーにとって使いやすいものにするために最善を尽くしました。さらに、経験豊富なユーザーにとっても便利なリファレンスポイントとして機能します。読者がコマンドを探索するときに、コマンドを試してみることをお勧めします。標準入力と参照ファイルの両方を使用して、これらのLinuxCutコマンドを示します。ここからファイルの内容をコピーして貼り付け、システムに作成できます。
デモンストレーション目的で使用される参照ファイル
test.txtというテキストファイルを使用しています ホームディレクトリにあります。このファイルには、すべて4つの列を含む5つの行または行が含まれています。各行には、国の名前、首都、通貨、人口が含まれています。すべて区切り文字のコロンで区切られます。システムでこのファイルを作成し、以下の内容で埋めます。
France: Paris: Euro: 65 million Austria: Vienna: Euro: 8 million Turkey: Ankara: Lira: 79 million Belgium: Brussels: Euro: 11 million Japan: Tokyo: Yen: 126 million
Unixでのカットコマンドの構文
Linuxのcutコマンドの構文は次のとおりです。
cut OPTION... [FILE]...
オプション sにはbが含まれます (バイトベースの切断)の場合、 f (フィールド)、 c (文字)、 d (区切り文字)、補完 、および –output-delimiter 。 ファイル ファイル名です。また、カットが標準の入力ストリームでどのように機能するかについても説明します。
---入力ストリームからテキストを切り取るには、echoコマンドを使用して(|)をパイプします cutコマンドへの出力。同じ方法を使用して、猫からのカットの入力を提供できます。
バイト位置に基づいてテキストを切り取る
cutユーティリティによって提供されるbオプションを使用すると、バイト位置に基づいてテキストのセクションを切り取ることができます。この目的のために、フラグ-bの後にバイト番号を付けてcutコマンドを使用する必要があります。
1。入力ストリームから1バイトのみを切り取ります
$ echo "cutting text from input" | cut -b 1
上記のコマンドは、文字列「入力からテキストを切り取る」をエコーします。 標準出力に接続し、cutコマンドへの入力としてパイプします。 cutコマンドは、最初のバイトだけを切り取ります( c ) -b で提供されたのは1つだけなので、この文字列から フラグ。
2。入力ストリームから特定のバイトを切り取る
$ echo "cutting text from input" | cut -b 1,3
このコマンドは、文字列の1バイト目と3バイト目のみを切り取ります「入力からテキストを切り取ります」 「ct」と表示されます 」を出力として。いくつかの異なるバイト位置で試してみてください。
3。入力ストリームからのバイト範囲のカット
$ echo "cutting text from input" | cut -b 1-12
上記のコマンドは、指定された文字列から1〜12のバイト範囲を切り取り、「cuttingtext」を出力します。 標準出力で。文字列の占有範囲外のバイト範囲を指定すると、「カット:無効なバイトまたは文字範囲」を示すメッセージが表示されます。 。
4。テキストファイルから1バイトだけを切り取ります
$ cut -b 1 test.txt
このコマンドは、ファイル test.txt内の5行のそれぞれの最初のバイトのみを表示します。 。これは、コマンド$ cattest.txt|と同等です。カット-b1
5。テキストファイルから特定のバイトを切り取る
$ cut -b 1,3 test.txt
上記のコマンドは、各行の最初と3番目のバイトのみをカットします。使用可能なバイトの範囲内であれば、任意のバイト番号を指定できます。
6。テキストファイルからバイト範囲を切り取る
$ cut -b 1-12 test.txt
このコマンドは、 test.txtの各行の最初の1バイトから12バイトを出力します。 ファイル。このコマンドが持つ機能が3番目のコマンドと類似していることに注意してください。
7。最初の7バイトをアルファベット順にカット
$ cut -b 1-7 test.txt | sort
各行の最初の7バイトをアルファベット順に表示するためのsortコマンドへの入力として、cutコマンドの出力を提供できます。アルファベット順の並べ替えの場合、並べ替えコマンドにはオプションは必要ありません。
8。最初の7バイトを逆の順序でカットします
$ cut -b 1-7 test.txt | sort -r
このcutコマンドは、各行から最初の7バイトを切り取り、それらを逆の順序で出力します。パイプを使用して、cutコマンドの出力がsortコマンドにどのように供給されているかを確認します。
9。 5バイト目から入力ストリームの終わりまでカット
$ echo "cutting text from input" | cut -b 5-
上記のcutコマンドは、テキストを5バイト目から文字列の最後までカットします。このコマンドは、指定されたバイト位置から入力ストリームの終わりまでカットする必要がある場合に便利です。末尾をオンにしたまま、bフラグの値を変更するだけです。
10。 5バイト目からファイルの終わりまでカット
$ cut -b 5- test.txt
このコマンドは、 test.txtの5行すべてのカットを開始します 5バイト目の位置から、各行が終了した後にのみ終了します。この操作では、末尾のハイフン(-)は必須です。
11。最初のバイトから指定されたバイト数をカットする
$ echo "cutting text from input" | cut -b -5
このコマンドは、入力文字列の最初の5バイトをカットします。 bフラグの値を置き換えるだけで、開始バイトから他のバイト位置にカットできます。前にハイフン(-)を追加することを忘れないでください。そうしないと、出力が期待どおりになりません。
12。最初のバイトからファイルから指定された位置にカット
$ cut -b -5 test.txt
上記のコマンドは、テキストファイルから各行の最初の5バイトだけを切り取ります。このリストのコマンド9〜12でハイフン(-)がどのように使用されているかに注意してください。
文字に基づいてテキストを切り取る
Unixのcutコマンドを使用すると、ユーザーは文字に基づいてテキストのセクションを切り取ることができます。大きなファイル処理タスクを処理するときは、これを頻繁に行う必要があります。それらを試してみて、文字ベースのカットとバイトベースのカットの類似点に注目してください。
13。入力ストリームから1文字だけを切り取ります
$ echo "cutting text from input" | cut -c 1
上記のコマンドは、標準入力から最初の文字を切り取り、端末に表示します。この場合は「c 「。これを明確に理解するには、文字列を別の文字列に変更してください。
14。入力ストリームから特定の文字を切り取る
$ echo "cutting text from input" | cut -c 1,3
このコマンドは、入力文字列の最初と3番目の文字のみを切り取って表示します。他の文字をカットしてみることができますが、文字列の文字数制限を超えないように注意してください。
15。入力ストリームから文字の範囲を切り取る
$ echo "cutting text from input" | cut -c 1-12
このコマンドの場合、「cut」は最初の位置から12番目の位置までの範囲の文字をカットします。結果は「テキストの切り取り」になります 「。このLinuxのcutコマンドと3番目のコマンドの類似点に注意してください。
16。テキストファイルから1文字だけを切り取ります
$ cut -c 1 test.txt
このコマンドは、ファイルtest.txtの5行のそれぞれの最初の文字のみを表示します。これは、コマンド$ cattest.txt|と同等です。 -c 1をカットし、バイトフラグを使用した場合と同じ結果を提供します。
17。テキストファイルから特定の文字を切り取る
$ cut -c 7,10 test.txt
上記のコマンドは、各5行の7番目と10番目の文字のみを切り取ります。使用可能な文字の範囲内であれば、任意の文字位置を指定できます。
18。テキストファイルの文字範囲をカット
$ cut -c 1-12 test.txt
このコマンドは、 test.txtの各行の最初の1文字から12文字を出力します。 ファイル。 Unixのcutコマンドは、文字の範囲とバイトの範囲を切り取るときに同じように動作します。
19。最初の5文字をアルファベット順にカット
$ cut -c 1-5 test.txt | sort
各行の最初の5バイトをアルファベット順にカットするためのsortコマンドへの入力として、cutコマンドの出力を提供できます。アルファベット順に並べ替える場合、並べ替えコマンドにはオプションは必要ありません。
20。最初の5文字を逆の順序でカットします
$ cut -c 1-5 test.txt | sort -r
この切り取りコマンドは、各行から最初の5文字を切り取り、逆に並べ替えた後にそれらを表示します。パイプを使用して、cutコマンドの出力がsortコマンドにどのように供給されているかを確認します。
21。 5番目の文字から入力ストリームの最後までカット
$ echo "cutting text from input" | cut -c 5-
上記のcutコマンドは、5バイト目から文字列の最後までテキストを切り取ります。指定された文字位置から入力ストリームの終わりまでカットする必要がある場合に役立ちます。末尾をオンにしたまま、bの後に値を変更するだけです。
22。 5番目の文字からファイルの最後まで切り取ります
$ cut -c 5- test.txt
このコマンドは、test.txtファイルの5行のそれぞれを5番目の文字位置から切り取り始め、すべての行の終わりに達した後に終了します。この種の操作では、末尾のハイフン(-)は必須です。
23。最初の位置から指定した量の文字をカットする
$ echo "cutting text from input" | cut -c -5
このコマンドは、入力の最初の5文字の位置のみを切り取ります。値-cを代入するだけで、開始文字から他の文字位置に切り取ることができます。 。前にハイフン(-)を追加することを忘れないでください。そうしないと、出力は期待したものと同じになりません。
24。最初の文字からファイルから指定された位置にカット
$ cut -c -5 test.txt
Unixでのこのcutコマンドは、ファイルtest.txtから各行の最初の5文字を切り取ります。このリストのコマンド21〜24でハイフン(-)がどのように使用されているかに注意してください。
フィールドと区切り文字を使用して列からテキストを切り取る
cutコマンドを使用すると、ユーザーはテキストのセクションを非常に簡単に切り取ることができます。このためには、カットのdフラグとfフラグの両方を使用する必要があります。 dフラグは区切り文字を表し、fはフィールドを表します。区切り文字は、テキストのセクションを他のセクションから分離する特殊文字です。一般的な例には、「-」、「:」、および「」(スペース)が含まれます。使用している参照ファイルには、区切り文字として「:」があります。
25。入力ストリームの最初のセクションを切り取ります
$ echo "Let's cut this input stream section by section" | cut -d ' ' -f 1
上記の切り取りコマンドは、テキストの最初のセクションを切り取ります(「Let’s」 この場合)入力ストリームから。区切り文字フラグ-dの値に注意してください 単一のスペースです。コロンで区切られたテキストで試してみて、自分で何が起こるかを確認してください。
26。ファイルの最初のセクションを切り取る
$ cut -d ':' -f 1 test.txt
このコマンドは、参照ファイル内の各行の最初の列を返し、5か国すべての名前を出力します。ファイルが列を区切る方法であるため、区切り文字フラグに提供された値はコロンでした。
27。入力ストリームの特定のセクションをカットする
$ echo "Let's cut this input stream section by section" | cut -d ' ' -f 1,2,3
ここでは、指定された入力文字列の最初の3つのフィールドのみを表示するようにcutに指示しました。これは、フィールド位置のコンマ区切りの配列を使用して行われます。このコマンドの出力は、「これをカットしましょう」になります。 ‘。
28。ファイルの特定のセクションを切り取る
$ cut -d ':' -f 1,2,3 test.txt
このコマンドも、前のコマンドと同じ種類の出力を提供します。ここでは、cutは標準の入力ではなく、ファイルを処理しているだけです。それだけです。リストにある各国の名前、首都、通貨が表示されている必要があります。ただし、区切り文字(スペースとコロン)の違いに注意してください。
29。入力ストリームからフィールドの範囲を切り取る
$ echo "Let's cut this input stream section by section" | cut -d ' ' -f 1-5
上記のコマンドは、文字列の最初の5つのフィールドを切り取り、ターミナルに表示します。複数のフィールド間の区切り文字としてスペースを使用する場合は、アポストロフィが必要です。
30。ファイルからフィールドの範囲を切り取る
$ cut -d ':' -f 1-3 test.txt
このcutコマンドは、テキストファイルの最初の3列をそれぞれ切り取り、出力として表示します。前のコマンドの前のコマンドと同じ結果が表示されるはずです。 –や:。
のような文字には、アポストロフィは必須ではありません。31。特定のフィールドから各エントリを切り取り、アルファベット順にリストします
$ cut -d ':' -f 1 test.txt | awk '{print $1}' | sort
リスト内の5つの国の名前をアルファベット順に見つける必要があるとすると、上記のコマンドを使用してこれを行うことができます。アルファベット順に並べられた国が一覧表示されます。 fフラグの値を置き換えると、他のフィールドでも同様にこれを行うことができます。
32。フィールドから各エントリを切り取り、アルファベット順に逆順にリストします
$ cut -d ':' -f 1 test.txt | awk '{print $1}' | sort -r
このコマンドは、上記のコマンドと同じ操作を実行しますが、エントリを逆の方法で並べ替えるだけです。それだけです。 -r により、ここで出力が変更されます ソートに渡されたフラグ。
33。固定フィールドから入力ストリームの終わりまでカット
$ echo "Let's cut this input stream section by section" | cut -d ' ' -f 2-
このcutコマンドは、2番目のフィールドから文字列の最後までカットします。指定された位置から入力の最後までカットする必要がある場合に役立ちます。 -fの値を変更できます トレーリングを維持しながら–さまざまなフィールドからカットするためにオンにします。
34。固定フィールドからファイルの終わりまでカット
$ cut -d ':' -f 2- test.txt
このように使用すると、cutコマンドは指定されたフィールドから切り取りを開始し、各行の終わりまで進みます。この場合、リストにある5か国それぞれの首都、通貨、人口が出力されます。
35。最初の列から指定した数の列を切り取ります
$ echo "Let's cut this input stream section by section" | cut -d ' ' -f -5
このコマンドは、指定された入力の最初の5つのフィールドのみを切り取ります。値-f。を代入するだけで、開始列から他の列位置に切り取ることができます。 ただし、前にハイフン(-)を追加する必要があります。そうしないと、出力が期待と一致しません。
36。最初の列から始めて、ファイルの指定された列をいくつか切り取ります
$ cut -d ':' -f -2 test.txt
このLinuxのcutコマンドは、最初の列からファイルtest.txtの切り取りを開始し、2番目のコマンドの切り取りが終了した後に終了します。したがって、このコマンドの出力には、各国の名前とそれぞれの首都が表示されます。
37。 CSVファイルの複数のフィールドを切り取る
$ cut -d ',' -f 1,2 file.csv
大量のCSVドキュメントを操作する場合、カットコマンドは実行可能なツールであることがよくあります。たとえば、上記のコマンドは、file.csvというコンマ区切りのCSVファイルの最初の2列を切り取ります。
38。 CSVファイルの特定のフィールドを切り取り、逆の順序で並べ替えます
$ cut -d ',' -f 1,3,5 file.csv | sort -r
上記のコマンドは、file.csvという名前のコンマ区切りのCSVファイルの1列目、3列目、および5列目を切り取り、出力を逆の順序で表示します。
エキスパート向けのその他のLinuxカットコマンド
cutコマンドは、適切なフィルターやその他の堅牢なLinuxコマンドで使用することにより、高度なファイル処理に使用できます。以下では、長期的に役立つ可能性のあるいくつかのコマンドについて説明します。
39。 Cutコマンドを使用してpasswdファイルを検査する
$ cut -d ':' -f1 /etc/passwd
ほとんどのシステムの/etc内に保存されているpasswdファイルには、システムとそのユーザーに関する非常に機密性の高い情報が含まれています。 cutコマンドを使用すると、このファイルをすばやく検査できます。区切り文字「:」は、このファイルの列がそれを使用して区切られているために使用されます。 -fの値を変更します さまざまなフィールドを監視します。
40。特定のフィールドを切り取り、一意のエントリのみを表示する
$ cut -d ':' -f 3 test.txt | uniq -u
Linuxでのこのcutコマンドは、ファイルtest.txtの3番目の列を切り取り、一意のエントリのみを表示します。したがって、このファイルの場合、出力には3つの通貨、つまりユーロ、リラ、円のみが含まれます。
41。指定されたものを除く入力ストリームのすべてのバイトをカットします
$ echo "Let's cut this input stream section by section" | cut -b 1,3,5,7 --complement
このcutコマンドは、 -b に指定された文字を除く、指定された入力文字列のすべての文字を切り取ります。 。したがって、バイト位置の1番目、3番目、5番目、および7番目は出力から省略されます。
42。指定されたものを除くファイルのすべてのバイトをカットする
$ cut -b 2,4,6 test.txt --complement
この方法で使用すると、cutコマンドは、コマンドで指定されているものを除く、ファイルtest.txtのすべてのバイトをカットします。したがって、出力には各行の2バイト目、4バイト目、および6バイト目は含まれません。
43。指定されたものを除く入力ストリームのすべての文字をカットする
$ echo "Let's cut this input stream section by section" | cut -c 1,3,5,7 --complement
このコマンドは、入力文字列の1番目、3番目、5番目、および7番目の文字の切り取りを控え、代わりにこれら4つを除く他のすべての文字を切り取ります。
44。指定されたものを除くファイルのすべての文字を切り取る
$ cut -c 2,4,6 test.txt --complement
このコマンドの場合、出力には、言及されているものを除くtest.txtファイルのすべての文字が含まれます。そのため、2番目、4番目、6番目の文字は表示されません。
45。指定されたものを除くすべての入力セクションを切り取ります
$ echo "Let's cut this input stream section by section" | cut -d ' ' -f 1,3,5 --complement
上記のコマンドは、文字列「 cut input section by section 」を出力します。 「。したがって、フィールドフラグの後に記載されているものを除いて、すべての入力セクションが表示されます。
46。指定されたものを除くファイルのすべての列を切り取る
$ cut -d ':' -f 2,3 test.txt --complement
このコマンドは、ファイル test.txtの最初と最後の列のみを切り取ります 。そのため、補完フラグを使用して大きな表形式のドキュメントを処理するときに、一部のフィールドの選択を簡単に解除できます。
47。入力の一部を切り取り、文字ごとに反転します
$ echo "Let's cut this input stream section by section" | rev | cut -d ' ' -f 1,3
上記のLinuxコマンドは、入力の最初と3番目のセクションを切り取り、文字ごとに逆にします。あるコマンドの出力が他のコマンドへの入力としてどのように供給されているかに注意してください。
48。ファイル内の特定の列を切り取り、文字ごとに反転する
$ cut -d ':' -f 1,3 test.txt | rev
このコマンドは、ファイルtest.txtの指定されたフィールドのみを切り取り、結果を文字ごとに逆に表示します。
49。カットコマンドの出力区切り文字を変更する
$ echo "A,comma,separated,list,for,demonstration,purposes" | cut -d ',' -f 1- --output-delimiter=' '
Cutを使用すると、結果を表示するときに出力区切り文字を変更できます。上記のコマンドは、カンマ区切りリストのすべてのセクションを切り取りますが、結果を表示するときにカンマをスペースに置き換えます。
50。タブ区切り文字を使用したCut+Sedコマンドの例
$ sed 's/:/\t/g' test.txt | cut -f 1-4
リストの最後のcutコマンドは、強力なsedユーティリティを使用して、ファイル内のコロンをタブに置き換えます。 \ tを置き換えることができます –または;のような他の文字と一緒に選択した出力区切り文字に変更してください。
終わりの考え
Unixのcutコマンドは、大きなファイルを頻繁に処理する必要があるユーザーに多くのメリットをもたらすことができる用途の広いツールです。この素晴らしいユーティリティに慣れるのに役立つ50の最高のLinuxカットコマンドの概要を説明しました。それらを個別に試して、利用可能なさまざまなオプションに変更を加える必要があります。これは、カットコマンドのさまざまなバリエーションを詳細に理解するのに役立ちます。うまくいけば、私たちはあなたをできるだけ助けるという私たちの探求に成功しました。便利なLinuxコマンドに関する今後のガイドについては、私たちと一緒にいてください。