[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

cut【コマンド】

pointこの用語のポイント

pointUNIX系で使えるコマンドだよ

pointテキストファイルの各行から文字列を抜き出すよ

point抜き出す文字列は範囲指定するよ

スポンサーリンク

簡単に書くよ

cut【コマンド】とは

テキストファイルの各行から指定範囲内の文字列を抜き出して表示するときに使うコマンド
です。

image piyo

詳しく書くよ

UNIX系(LinuxとかMacとか)で使えます。

書き方は

cut [オプション] [対象のファイル名]

です。
オプションはあれやこれやとあります。

オプション説明
-b 【範囲指定】バイト単位で抜き出す範囲を指定
--bytes=【範囲指定】
-c 【範囲指定】文字単位で抜き出す範囲を指定
--characters=【範囲指定】
-d 【区切り文字】区切り文字としてタブ以外を使用する。「-f」オプションと併用
--delimiter=【区切り文字】
-f 【範囲指定】フィールド単位で抜き出す範囲を指定
--fields=【範囲指定】
-n日本語とかの2バイト文字を途中でぶったぎらない。「-b」オプションと併用
--complementcomplement the set of selected bytes, characters or fields.
-s区切り文字を含まない行は表示しない。「-f」オプションと併用
--only-delimited
--output-delimiter=STRINGuse STRING as the output delimiter the default is to use the input delimiter
--helpヘルプを表示する
--versionライセンスとかバージョンとかを表示する

などですね。

なお、範囲指定の仕方は以下の通りです。
例として、数字は「5バイト目(5文字目、5番目のフィールド)」と「10バイト目(10文字目、10番目のフィールド)」を使っています。

指定意味
55バイト目(5文字目、5番目のフィールド)
5-5バイト目(5文字目、5番目のフィールド)から最後まで
5-105バイト目(5文字目、5番目のフィールド)から10バイト目(10文字目、10番目のフィールド)まで
-10最初から10バイト目(10文字目、10番目のフィールド)まで

ここまでを踏まえて、実際の使い方を見てみましょう。
例えば以下のファイルがあったとします。

■file1.txt
abcde【タブ】fghij【タブ】klmno
pqrst【タブ】uvwxy【タブ】z


この状態で

cut -b 3 file1.txt

を実行すると、結果は

c
r


になります。
1行目の先頭から3バイト目の文字「c」と2行目の先頭から3バイト目の文字「r」が表示されています。

cut -b 3- file1.txt

を実行すると、結果は

cde【タブ】fghij【タブ】klmno
rst【タブ】uvwxy【タブ】z


になります。
それぞれの行において、先頭3バイト目から最後まで抜き出されています。

cut -b 3-5 file1.txt

を実行すると、結果は

cde
rst


になります。
それぞれの行において、先頭3バイト目から5バイト目まで抜き出されています。

cut -b -5 file1.txt

を実行すると、結果は

abcde
pqrst


になります。
それぞれの行において、先頭3バイト目から5バイト目まで抜き出されています。

これが基本的な使い方です。

上の例ではバイト数単位で指定しましたが、同じように「-c」を指定すれば文字数単位で、「-f」を指定すれば区切り文字を基準としたフィールド単位で抜き出すことができます。

cut -c 2 file1.txt

を実行すれば

b
q


になります。
ありゃ、アルファベットなのでバイト単位で抜き出したときと同じ結果ですね。
「-c」オプションは日本語とかを扱うときに意味を持ってきます。

同じように

cut -f 2 file1.txt

を実行すれば

fghij
uvwxy


になります。
タブを区切り文字として、各行の2番目のフィールドが表示されています。

あと取り上げておくべきは「-n」オプションでしょうか。

例えば以下のファイルがあったとします。

■file2.txt
あいうえお

この状態で

cut -b -5 file2.txt

を実行すると、私の環境では

あ・

と表示されます。
これは日本語が3バイトで数えられているので、2文字目の「い」の途中でぶった切られているのが原因です。
このようなマルチバイト文字が途中でぶった切られないようにするためのオプションが「-n」です。
「-n」オプションを指定して

cut -b -5 -n file2.txt

を実行すると、私の環境では



になります。
「い」が途中でぶった切られないように、キリの良いところでぶった切ってくれたのでしょうね。
日本語を含むファイルからバイト単位で抜き出すときは意識してあげてください。

cutコマンドの使い方としては、そんなところでしょうか。

image piyo2

一言でまとめるよ

まぁ「cut」ってコマンドが出てきたら「テキストファイルの各行から指定範囲内を抜き出すときに使うんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク