ファイル列を選択するための10の実用的なLinuxカットコマンドの例
Linuxコマンドカットはテキスト処理に使用されます。このコマンドを使用すると、列を選択してファイルからテキストの一部を抽出できます。
このチュートリアルでは、日常のコマンドラインアクティビティで使用できるcutコマンドの実用的な例をいくつか紹介します。
ほとんどの例では、次のテストファイルを使用します。
$ cat test.txtcat command for file oriented operations.cp command for copy files or directories.ls command to list out files and directories with its attributes.
文字の列を選択
ファイルから目的の列のみを抽出するには、-cオプションを使用します。次の例では、ファイルtest.txtの各行の2番目の文字を表示します。
$ cut -c2 test.txtaps
上記のように、文字a、p、sはtest.txtファイルの各行。
範囲を使用して文字の列を選択
文字の範囲は、-で区切られた開始位置と終了位置を指定することによってファイルから抽出することもできます。次の例では、test.txtというファイルから各行の最初の3文字を抽出します
$ cut -c1-3 test.txtcatcpls
開始位置または終了位置のいずれかを使用して文字の列を選択します
-cオプションを使用してカットコマンドに開始位置または終了位置のいずれかを渡すことができます。
以下は、「-」の前の開始位置のみを指定します。この例では、test.txtファイルの3文字目から各行の終わりまでを抽出します。
$ cut -c3- test.txtt command for file oriented operations. command for copy files or directories. command to list out files and directories with its attributes.
以下では、「-」の後の終了位置のみを指定しています。この例では、test.txtファイルから各行の先頭から8文字を抽出します。
$ cut -c-8 test.txtcat commcp commals comma
数値を指定しないと、行全体が印刷されます。以下に示すように、「-」の前後。
$ cut -c- test.txtcat command for file oriented operations.cp command for copy files or directories.ls command to list out files and directories with its attributes.
ファイルから特定のフィールドを選択
x個の番号を選択する代わりに文字、フィールド全体を抽出したい場合は、オプション-fと-dを組み合わせることができます。オプション-fは抽出するフィールドを指定し、オプション-dは入力ファイルで使用されるフィールド区切り文字を指定します。
次の例では、/からの各行の最初のフィールドのみを表示します。フィールド区切り文字を使用したetc / passwdファイル:(コロン)。この場合、最初のフィールドはユーザー名です。ファイル
$ cut -d":" -f1 /etc/passwdrootdaemonbinsyssyncgamesbala
ファイルから複数のフィールドを選択
ファイルまたは標準出力から複数のフィールドを抽出することもできます。以下の例では、ログインシェルが「/ bin / bash」であるユーザーのユーザー名とホームディレクトリを表示します。
$ grep "/bin/bash" /etc/passwd | cut -d":" -f1,6root:/rootbala:/home/bala
フィールドの範囲を表示するには、開始フィールドを指定しますこの例では、フィールド1から4、6、7を選択しています。
$ grep "/bin/bash" /etc/passwd | cut -d":" -f1-4,6,7root:x:0:0:/root:/bin/bashbala:x:1000:1000:/home/bala:/bin/bash
行に区切り文字が含まれている場合にのみフィールドを選択します
/ etc / passwdの例では、:(コロン)以外の別の区切り文字を渡すと、cutは行全体を表示するだけです。
次の例では、区切り文字を|(パイプ)として指定しました。cutコマンドは、|(パイプ)が区切り文字として含まれている行が見つからない場合でも、行全体を表示するだけです。
$ grep "/bin/bash" /etc/passwd | cut -d"|" -f1root:x:0:0:root:/root:/bin/bashbala:x:1000:1000:bala,,,:/home/bala:/bin/bash
ただし、-sオプションを使用すると、指定した区切り文字を含む行のみをフィルタリングして表示できます。
次の例では、cutコマンドの場合とは異なり、出力は表示されません。 / etc / passwdファイルで区切り文字として|(パイプ)を含む行が見つかりません。
$ grep "/bin/bash" /etc/passwd | cut -d"|" -s -f1
指定されたフィールドを除くすべてのフィールドを選択
選択フィールドリストを補完するには、オプション–complementを使用します。
次の例は次のように表示されます。フィールド7を除く/ etc / passwdファイルのすべてのフィールド
$ grep "/bin/bash" /etc/passwd | cut -d":" --complement -s -f7root:x:0:0:root:/rootbala:x:1000:1000:bala,,,:/home/bala
表示用の出力区切り文字の変更
デフォルトでは、出力区切り文字は同じです。 cut-dオプションで指定する入力区切り文字として。
出力区切り文字を変更するには、以下に示すようにオプション–output-delimiterを使用します。この例では、入力区切り文字は:(コロン)ですが、出力区切り文字は#(ハッシュ)です。
$ grep "/bin/bash" /etc/passwd | cut -d":" -s -f1,6,7 --output-delimiter="#"root#/root#/bin/bashbala#/home/bala#/bin/bash
出力区切り文字を改行に変更
この例では、cutコマンド出力のすべてのフィールドが別々の行に表示されます。引き続き–output-delimiterを使用しましたが、値は$ ‘\ n’であり、出力区切り文字として改行を追加する必要があることを示しています。
$ grep bala /etc/passwd | cut -d":" -f1,6,7 --output-delimiter=$"\n"bala/home/bala/bin/bash
結合他のUnixコマンド出力でカット
カットコマンドの威力は、他のUnixコマンドの標準出力と組み合わせると実現できます。
カットコマンドの基本的な使用法をマスターしたら上で説明したように、cutコマンドを使用すると、テキスト操作の要件の多くを解決できます。
次の例は、psコマンドの出力から有用な情報のみを抽出する方法を示しています。また、最終出力がcutコマンドに渡される前に、grepとsedを使用してpsコマンドの出力をフィルタリングする方法も示しました。ここでは、上記の例で説明したカットオプション-dと-fを使用しました。
この記事を楽しんだら、気に入るかもしれません。
|
|