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

ファイル列を選択するための 10 の実用的な Linux カット コマンドの例

テキスト処理には Linux コマンドの cut を使用します。このコマンドを使用して、列を選択してファイルからテキストの一部を抽出できます。

このチュートリアルでは、日常のコマンド ライン アクティビティで使用できるカット コマンドの実用的な例をいくつか紹介します。

ほとんどの例では、次のテスト ファイルを使用します。

$ cat test.txt
cat command for file oriented operations.
cp command for copy files or directories.
ls command to list out files and directories with its attributes.

1.文字の列を選択

ファイルから目的の列のみを抽出するには、-c オプションを使用します。次の例は、ファイル test.txt の各行の 2 番目の文字を表示します

$ cut -c2 test.txt
a
p
s

上記のように、文字 a、p、s は、test.txt ファイルの各行の 2 番目の文字です。

2.範囲を使用して文字列を選択

- で区切られた開始位置と終了位置を指定することにより、ファイルから文字の範囲を抽出することもできます。次の例では、test.txt というファイルから各行の最初の 3 文字を抽出します

$ cut -c1-3 test.txt
cat
cp
ls

3.開始位置または終了位置を使用して文字列を選択

-c オプションを使用して、開始位置または終了位置をカット コマンドに渡すことができます。

以下は、'-' の前の開始位置のみを指定します。この例では、test.txt ファイルから 3 文字目から各行の末尾までを抽出します。

$ cut -c3- test.txt
t 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.txt
cat comm
cp comma
ls comma

以下に示すように、「-」の前後に数字を指定しないと、行全体が出力されます。

$ cut -c- test.txt
cat command for file oriented operations.
cp command for copy files or directories.
ls command to list out files and directories with its attributes.

4.ファイルから特定のフィールドを選択

x 個の文字を選択する代わりに、フィールド全体を抽出したい場合は、オプション -f と -d を組み合わせることができます。オプション -f は抽出するフィールドを指定し、オプション -d は入力ファイルで使用されるフィールド区切り文字を指定します。

次の例では、フィールド区切り文字 (コロン) を使用して、/etc/passwd ファイルの各行の最初のフィールドのみを表示します。この場合、最初のフィールドはユーザー名です。ファイル

$ cut -d':' -f1 /etc/passwd
root
daemon
bin
sys
sync
games
bala

5.ファイルから複数のフィールドを選択

ファイルまたは stdout から複数のフィールドを抽出することもできます。以下の例では、ログイン シェルが「/bin/bash」であるユーザーのユーザー名とホーム ディレクトリが表示されます。

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
root:/root
bala:/home/bala

フィールドの範囲を表示するには、次のように開始フィールドと終了フィールドを指定します。この例では、フィールド 1 から 4、6、および 7 を選択しています

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7
root:x:0:0:/root:/bin/bash
bala:x:1000:1000:/home/bala:/bin/bash

6.行に区切り記号が含まれている場合にのみフィールドを選択

この /etc/passwd の例では、:(コロン) 以外の別の区切り文字を渡すと、cut は行全体を表示するだけです。

次の例では、区切り文字を | として指定しています。 (パイプ) であり、cut コマンドは、| を含む行が見つからない場合でも、単に行全体を表示します。 (パイプ) 区切り記号として。

$ grep "/bin/bash" /etc/passwd | cut -d'|'  -f1
root:x:0:0:root:/root:/bin/bash
bala:x:1000:1000:bala,,,:/home/bala:/bin/bash

ただし、-s オプションを使用して、指定した区切り文字を含む行のみをフィルタリングして表示することは可能です。

次の例では、cut コマンドで | を含む行が見つからなかったため、出力は表示されません。 (パイプ) /etc/passwd ファイルの区切り文字として。

$ grep "/bin/bash" /etc/passwd | cut -d'|' -s -f1

7.指定されたフィールド以外のすべてのフィールドを選択

選択フィールド リストを補完するには、オプション –complement を使用します。

次の例では、フィールド 7 を除く /etc/passwd ファイルのすべてのフィールドを表示します

$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -s -f7
root:x:0:0:root:/root
bala:x:1000:1000:bala,,,:/home/bala

8.表示用の出力区切り文字を変更

デフォルトでは、出力区切り文字は、cut -d オプションで指定した入力区切り文字と同じです。

出力区切り文字を変更するには、以下に示すようにオプション –output-delimiter を使用します。この例では、入力区切り文字は :(コロン) ですが、出力区切り文字は # (ハッシュ) です。

$ grep "/bin/bash" /etc/passwd | cut -d':'  -s -f1,6,7 --output-delimiter='#'
root#/root#/bin/bash
bala#/home/bala#/bin/bash

9.出力区切り文字を改行に変更

この例では、cut コマンド出力のすべてのフィールドが個別の行に表示されます。 –output-delimiter を引き続き使用しましたが、値は $'\n' であり、出力区切り文字として改行を追加する必要があることを示しています。

$ grep bala /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$'\n'
bala
/home/bala
/bin/bash

10. Cut を他の Unix コマンド出力と組み合わせる

cut コマンドの威力は、他の Unix コマンドの stdout と組み合わせると実現できます。

上記で説明したカット コマンドの基本的な使用方法を習得したら、カット コマンドを賢く使用して、多くのテキスト操作要件を解決できます。

次の例は、ps コマンドの出力から有用な情報のみを抽出する方法を示しています。また、最終出力が cut コマンドに与えられる前に、grep と sed を使用して ps コマンドの出力をフィルタリングする方法も示しました。ここでは、上記の例で説明したカット オプション -d と -f を使用しています。

$ ps axu | grep python | sed 's/\s\+/ /g' | cut -d' ' -f2,11-
2231 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
2311 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
2414 /usr/bin/python /usr/lib/ubuntuone-client/ubuntuone-syncdaemon
2463 /usr/bin/python /usr/lib/system-service/system-service-d
3274 grep --color=auto python

Linux
  1. Linuxでのヘッドコマンドの5つの実用例

  2. Linux での ln コマンドの例

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

  1. Linuxでのmvコマンド:7つの重要な例

  2. Linuxでのcpコマンド:7つの実用的な例

  3. Linuxシャットダウンコマンド:5つの実用的な例

  1. Linuxでの8つのヘッドコマンドの例

  2. Linuxでの8つのStatコマンドの例

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