Linuxはcut
bashの出力の各行からセクションを削除するためのコマンドを提供します。 cut
コマンドは、ファイルまたは標準出力から列/テキストを抽出フィルタリングするメカニズムを提供します。 詳細な例を以下に示します。, 次のテキストファイルがありますfruits.txt
apple 1 good grape 5 bad banana 2 not bad
cut OPTION... ...
select column
cutコマンドは、すべての行の文字番号に従って指定された列を選択する機能を提供します。 ここでは、すべての行3文字を行ごとにコンソールに印刷します。 これは単一の文字のみを印刷します。,
$ cut -c3 fruits.txt
文字範囲の列を選択
前の例では、端末に単一の文字を印刷しました。 以下のように文字範囲を指定することで、複数の文字をコンソールに出力することもできます。 文字インデックスは1から始まることがわかります。,
$ cut -c1-6 fruits.txt
開始位置を使用して列を選択
カットのもう一つの便利な機能は、開始位置から終了までの
$ cut -c3- fruits.txt
終了位置を使用して列を選択
開始位置から指定された位置までの範囲を印刷することができます。, これは、開始位置を1と仮定します
$ cut -c-3 fruits.txt
単一のフィールドを選択
フィールドは、スペースのような特定の文字で区切られたテキストの一部です。タブ、ダブルコンマなど フィールド番号のテキストを選択できます。 既定では、フィールド区切り文字はtabです。 当社のテキストはすでにタブの扱い. この例では、3を選択します。 フィールド,
$ cut -f3 fruits.txt
複数のフィールドを選択
文字で行うように、フィールド範囲を指定することもできます。 以下のコマンドでフルーツの名前と数を選択します。
$ cut -f1-2 fruits.txt
次の例では、範囲を使用しない複数のフィールドを一つずつ選択します。,
$ cut -f1,2,3 fruits.txt
最後のフィールド
最後のフィールドを印刷しています。 問題は、フィールド数がテキストに応じて変化する可能性があり、cut
コマンドを使用してのみ最後のフィールドを指定できないことです。 次の例では、rev
コマンドを使用して最後のフィールドを取得します。,
$ cat fruits.txt | rev | cut -f1 | rev
選択フィールドに指定された文字が含まれています
デフォルトではcut
do文字に従って行を除外する機能はありませんが、grep
を使用してこの機能を簡単に実装できます。, 含まれる行のみを選択しますapp
$ grep "app" fruits.txt | cut -f1-2
指定された文字を除くフィールドを選択します
前の例を逆にして、不要な行を削除することができます。 app
を含む行を削除してから、1から2までの列を出力します。,
$ grep -v "app" fruits.txt | cut -f1-2
区切り文字を指定します
区切り文字はフィールドを分割するために使用されます。 デフォルトでは、タブが区切り文字として使用されます。 ただし、以下のように-d
オプションで指定できます。 この例に続いて、:
を区切り文字として使用します。passwd
ファイルはそれを使用しているためです。 次に、フィールド1に存在するユーザー名のみを表示します。,
$ cut -d: -f1 /etc/passwd
フィールド以外の印刷
以前に見たように、フィールドは範囲としても印刷できます。 私達はまた分野の除外によって印刷してもいいです。 これはすべて印刷した。 この例に続いて、2を除くすべてのフィールドを印刷できます。
区切り文字の変更
テキストにはデフォルトで区切り文字があります。 状況によっては、コンソールへの印刷中に区切り文字を変更することができます。, --output-delimiter
option can be used for this operation. The following example will change the tab delimiter to the comma.
$ cut -f1,2,3 --output-delimiter="," fruits.txt