2024/02/13 22:13:39
cut
文字列を切り出す
SYNOPSIS
cut [OPTION]... [FILE]...
オプション一覧
| b | バイト数で切り出す位置を指定します |
| c | 文字数で切り出す位置を指定します(ロケール指定が必要) |
| f | フィールド単位で切り出す位置を指定します。フィールドのデリミタは -d オプションで指定します |
| d | フィールドのデリミタ |
| s | デリミタを含まない行を出力しない |
-b バイト指定で抜き出す
$ echo "123456789" | cut -b3
3
$ echo "123456789" | cut -b3-
3456789
$ echo "123456789" | cut -b3-5
345
$ echo "123456789" | cut -b-3
345
変な指定するとどうなるか。
$ echo "123456789" | cut -b0
cut: missing list of positions
Try `cut --help' for more information.
$ echo "123456789" | cut -b15-
$ echo "123456789" | cut -b-15
123456789
-c 文字数指定で抜き出す
-b 同様です。正しく動けばマルチバイトが文字数単位で抜き出せます。
-f フィールド単位で抜き出す
デフォルトのデリミタは TAB
$ echo -e "12\t34\t56\t78\t9" | cut -f2
34
$ echo -e "12\t34\t56\t78\t9" | cut -f-2
12 34
$ echo -e "12\t34\t56\t78\t9" | cut -f2-
34 56 78 9
$ echo -e "12\t34\t56\t78\t9" | cut -f2-4
34 56 78
-d フィールドのデリミタを指定する
$ echo "12 34 56 78 9" | cut -d" " -f2-4
34 56 78
-s デリミタを含まない行を出力しない
デリミタを含まない行を出力しないようにするには、-s オプションを付与する。