Creating Bar Codes and QR Codes - qrencode - BASH - GNU - Linux
目次:
- Cutコマンドの使用方法
- フィールドでカットする方法
- 区切り文字に基づいてカットする方法
- 選択を補完する方法
- 出力区切り文字を指定する方法
- バイトと文字でカットする方法
- カット例
- すべてのユーザーのリストを取得する
- 最も頻繁に使用される10個のコマンドを表示
- 結論
LinuxおよびUnixシステムには、テキストファイルの処理とフィルタリングを可能にする多くのユーティリティがあります。 Cutは、指定したファイルまたはパイプされたデータから行の一部を切り取り、結果を標準出力に出力できるコマンドラインユーティリティです。 区切り文字、バイト位置、および文字で行の一部をカットするために使用できます。
このチュートリアルでは、実用的な例と最も一般的なカットオプションの詳細な説明を通して、Linuxのcutコマンドの使用方法を示します。
Cutコマンドの使用方法
cutコマンドの構文は次のとおりです。
cut OPTION……
cutコマンドを使用するときは、次のオプションのうち1つだけを使用する必要があります。
-
-f
(----fields=LIST
)-フィールド、フィールドのセット、またはフィールドの範囲を指定して選択します。 これは最も一般的に使用されるオプションです。-b
(----bytes=LIST
)-バイト、バイトのセット、またはバイトの範囲を指定して選択します。-c
(----characters=LIST
)-文字、文字のセット、または文字の範囲を指定して選択します。
その他のオプションは次のとおりです。
-
-d
(----delimiter
)-デフォルトの「TAB」区切り文字の代わりに使用される区切り文字を指定します。--complement
選択を補完します。 このオプションを使用すると、cutは選択したものを除くすべてのバイト、文字、またはフィールドを表示します。-s
(----only-delimited
)-デフォルトでは、cutは区切り文字を含まない行を印刷します。 このオプションを使用すると、cutは区切り文字を含まない行を印刷しません。--output-delimiter
デフォルトでは、入力区切り文字を出力区切り文字として使用します。 このオプションを使用すると、異なる出力区切り文字列を指定できます。
cutコマンドは、0個以上の入力FILE名を受け入れることができます。 FILEが指定されていない場合、またはFILEが
-
場合、cutは標準入力を読み取ります。
-f
、
-b
、および
-c
オプションに渡されるLIST引数には、整数、コンマで区切られた複数の整数、整数の範囲、またはコンマで区切られた複数の整数の範囲を指定できます。 各範囲は次のいずれかです。
-
N-
から始まるN番目のフィールド、バイトまたは文字N
番目のフィールド、バイトまたは文字から行の終わりまで。 N番目からM番目のフィールド、バイト、または文字のNM
。-M
最初からM番目のフィールド、バイトまたは文字。
フィールドでカットする方法
Cutコマンドは、主にファイルの各行または標準入力から選択されたフィールドを表示するために使用されます。 指定しない場合、デフォルトの区切り文字は「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
選択を補完する方法
選択フィールドリストを補完するには、
--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='_'
バイトと文字でカットする方法
先に進む前に、バイトと文字を区別しましょう。
1バイトは8ビットで、256の異なる値を表すことができます。 ASCII標準が確立されたとき、英語を使用するために必要なすべての文字、数字、記号が考慮されました。 ASCII文字テーブルには128文字があり、各文字は1バイトで表されます。 コンピューターが世界的に普及し始めると、テクノロジー企業はさまざまな言語および256文字を超える言語の新しい文字エンコードを導入し始めました。単純な1対1のマッピングは不可能でした。 これにより、ドキュメントの共有やWebサイトの閲覧など、さまざまな問題が発生し、世界のほとんどの書記システムを処理できる新しいUnicode標準が必要でした。 UTF-8は、これらの問題を解決するために作成されました。 UTF-8では、すべての文字が1バイトで表されるわけではありません。 文字は1バイトから4バイトで表すことができます。
次の例では、2バイトを使用する
ü
文字を使用しています。
-b
(--
--bytes
)オプションを使用して、バイト位置を指定して行のセクションを切り取ります。
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
この記事を書いている時点では、GNU coreutilsにバンドルされているバージョンのcutには、文字ごとにカットするオプションがありません。
-c
オプションを使用する場合、cutは
-b
オプションを使用する場合と同じように動作します。
カット例
通常、cutコマンドは、パイピングを通じて他のコマンドと組み合わせて使用されます。 以下に例を示します。
すべてのユーザーのリストを取得する
getent passwd
コマンドの出力は
cut
渡され
getent passwd
は、区切り文字として
:
を使用して
getent passwd
出力します。
getent passwd | cut -d ':' -f1
最も頻繁に使用される10個のコマンドを表示
次の例では、cutコマンドを使用して、
history
コマンド出力の各行から最初の8バイトを取り除きます。
history | cut -c8- | sort | uniq -c | sort -rn | head
結論
これで、Linux cutコマンドの使用方法を十分に理解できたはずです。 非常に便利ですが、cutコマンドにはいくつかの制限があります。 複数の文字を区切り文字として指定することはサポートされておらず、複数のデシメートルはサポートされていません。
切断端子