cut
100%

テキスト操作 · レッスン 6

cut

cut を使い、各行から文字位置または区切られたフィールドを選択する方法を学びます。

cut コマンドは、入力の各行から指定した文字位置またはフィールドを選びます。区切り文字とフィールド位置が一定した構造化テキストに適しています。

例に使うタブ区切りファイルを作ります。printf\t をタブ、\n を改行として解釈します。

$ printf 'name\trole\nalice\tadmin\nbob\tviewer\n' > team.tsv

文字位置を選択する

各行の位置を選ぶには -c LIST を使います。位置は 1 から始まります。

$ cut -c 1 team.tsv
n
a
b
$ cut -c 1-4 team.tsv
name
alic
bob
$ cut -c 1,3 team.tsv
nm
ai
bb

リストには個別の位置や範囲を指定できます。空白、タブ、句読点も位置を占め、cut は各行を独立して処理します。

names.txt の各行から最初の文字を表示するコマンドはどれですか?

タブ区切りフィールドを選択する

フィールドは -f LIST で選び、標準の区切り文字はタブです。

$ cut -f 2 team.tsv
role
admin
viewer

文字選択と同様、11,32-4-32- などをリストに指定できます。

team.tsv の各行から 2 番目のタブ区切りフィールドを表示するコマンドはどれですか?

独自の区切り文字を選ぶ

タブ以外で区切られたフィールドでは、-d CHARACTER-f を使います。

$ printf 'alice;admin\nbob;viewer\n' > team.txt
$ cut -d ';' -f 1 team.txt
alice
bob

この形式の区切り文字は 1 文字です。引用符のないセミコロンはシェルで制御用の意味を持つため引用します。

team.txt の 2 番目のセミコロン区切りフィールドを表示するコマンドはどれですか?

区切り文字のない行を扱う

フィールドモードでは、区切り文字のない行は通常そのまま表示されます。抑制するには -s を加えます。

$ printf 'alice;admin\nheader\nbob;viewer\n' | cut -s -d ';' -f 2
admin
viewer

これは一般的な CSV の検証には使えません。CSV には引用された区切り、埋め込み改行、エスケープ規則があるため、CSV 対応ツールを使ってください。

cut -d ':' -f 1-s は何をしますか?

stdin から読み取る

ファイルを指定しない場合や入力オペランドに - を使う場合、cut は stdin を読みます。そのためパイプラインの処理段階に適しています。

$ printf 'red:1\nblue:2\n' | cut -d ':' -f 1
red
blue

generate-data | cut -d ':' -f 1 で、cut はどこから入力を読みますか?

レッスン完了

cut を完了しました

cut を使い、行指向テキストから一定した位置を選択できるようになりました。

  • 個別の文字位置や範囲を選択する。

  • -f でタブ区切りフィールドを抽出する。

  • -d で 1 文字の区切りを指定する。

  • 必要に応じて区切りのない行を抑制する。

  • ファイルまたは stdin から構造化テキストを読む。

学習進捗を保存

無料アカウントを作成してこのレッスンを保存し、どのデバイスからでも学習を続けられます。

無料アカウントを作成
次のレッスン
テキスト操作 に戻る