cutコマンドを使用して、文字列の一部を切り取ってみます。
(中級者向けのコマンド一覧はコチラ 中級者のためのLinuxコマンド入門)
~$ echo HELLO | cut -b1,3,5 HLO ~$
cutに-bオプションを指定することで、列(BYTE)番号で文字列を切り取りができました。
上記例では、1、3、5BYTE目の文字のみが残るようにフィルタしました。
複数行であっても、まとめてフィルタすることができます。
~$ banner HELLO # # ####### # # ####### # # # # # # # # # # # # # # ####### ##### # # # # # # # # # # # # # # # # # # # # ####### ####### ####### ####### ~$ banner HELLO | cut -b9-16 ####### # # ##### # # ####### ~$
オプション-b9-16と指定し、9BYTE目から16BYTE目に、Eを構成している文字列を切り取りました。
書式は「-b範囲」で、以下のような指定ができます
-b5-10 …… 5〜10BYTE目
-b-10 …… 1〜10BYTE目
-b5- …… 5BYTE目以降
-b5 …… 5BYTE目のみ
-b3,5 …… 3BYTE目と5BYTE目のみ
-b-8,20-28 …… 1〜8BYTE目と、20〜28BYTE目
cutで扱うテキストがタブ区切りの文字列であれば、フィールド指定ができます。
フィールド指定の確認のために、実験用テキストを作成してみます。
~$ seq -f "[%3g]" 50 | pr -t5J | tee sample.txt [ 1] [ 11] [ 21] [ 31] [ 41] [ 2] [ 12] [ 22] [ 32] [ 42] [ 3] [ 13] [ 23] [ 33] [ 43] [ 4] [ 14] [ 24] [ 34] [ 44] [ 5] [ 15] [ 25] [ 35] [ 45] [ 6] [ 16] [ 26] [ 36] [ 46] [ 7] [ 17] [ 27] [ 37] [ 47] [ 8] [ 18] [ 28] [ 38] [ 48] [ 9] [ 19] [ 29] [ 39] [ 49] [ 10] [ 20] [ 30] [ 40] [ 50] ~$
teeコマンドで標準出力しつつ、sample.txtに保存しました。このsample.txtをcutのフィールド指定でフィルタしましょう。
まずは3列目のみ切り抜きます。
~$ cut -f3 sample.txt [ 21] [ 22] [ 23] [ 24] [ 25] [ 26] [ 27] [ 28] [ 29] [ 30] ~$
次は1列目と4列目以降を切り抜きます。
~$ cut -f1,4- sample.txt [ 1] [ 31] [ 41] [ 2] [ 32] [ 42] [ 3] [ 33] [ 43] [ 4] [ 34] [ 44] [ 5] [ 35] [ 45] [ 6] [ 36] [ 46] [ 7] [ 37] [ 47] [ 8] [ 38] [ 48] [ 9] [ 39] [ 49] [ 10] [ 40] [ 50] ~$
このようにタブ区切りテキストを使えば、cutによるテキスト加工がし易くなります。
最後にcutコマンドを使った動画です。
cut command
コメント