Lから始まるLinux

2章58話
テキスト関連コマンド(その1)
2章59話 テキスト関連コマンド(その2)
もくじ
2章60話
パス関連コマンド
テキスト関連コマンド(その2)
若木 みどり
お兄ちゃん! テキスト関連だけでも 色々なコマンドがあるんだね! 前回は sort, uniq, tac, rev を学んだよ!
若木 しげる
他にもおさえたい テキスト関連コマンドがあるよ 今回は前回に続いて そのようなコマンドを紹介するね
cut コマンド
若木 しげる
cut 文字列の一部分を切り出すよ
cut [オプション]... [ファイル]...
オプション役割
-c 範囲, --characters=範囲指定された範囲の文字を切り出す
-f 範囲, --fields=範囲指定された範囲のフィールドを切り出す
-d 文字, --delimiter=文字フィールド区切り文字を指定(デフォルトはタブ文字)
若木 しげる
こんな感じで使えるよ
コマンド出力意味
cut -c 2 <<< helloe2文字目を切り出す
cut -c 2,5 <<< helloeo2文字目と5文字目を切り出す
cut -c 2-4 <<< helloell2文字目から4文字目までを切り出す
cut -d / -f 3 <<< /home/midori/diarymidori区切り文字を / として3番目のフィールドを切り出す
若木 みどり
あれ?cut -d / -f 3 <<< /home/midori/diary3番目のフィールドってdiary じゃないのかな?home, midori, diary3番目だと思うよ?
若木 しげる
これは cut を使うときに気をつけるべきことだねcut は文字列を「区切り文字」を目印にして前後に分割するんだ
若木 しげる
なので1文字目の「スラッシュ(/)」の前の「空文字」が1番目の要素になってそこから home, midori ... フィールドを数えていくので3番目の要素は midori となるんだ
若木 みどり(驚き)
なるほど…!気をつけるね!
tr コマンド
若木 しげる
tr文字列中の文字を置き換えたり取り除いたりするよtranslate の略で「変換する」「転換する」という意味なんだ
tr [オプション] セット1 [セット2]
オプション役割
-c, -C, --complement「セット1」の代わりに「セット1以外」を使う
-d, --delete「セット1」に指定された文字を削除する
若木 しげる
「セット」がわかりづらいので例を見たほうがわかりやすいよ
コマンド出力意味
tr a-z A-Z <<< helloHELLO「英小文字(a-z)」「英大文字(A-Z)」に変換する
tr -d l <<< helloheo「文字 lを削除する
tr -cd l <<< hellolll 以外の文字」を削除する
若木 みどり
慣れるのに時間が掛かりそうだけどかしこい処理をしてくれるコマンドなんだね!
wc コマンド
若木 しげる
wc文字数などを数えてくれるよword count の略なんだ
若木 しげる
オプションの指定がなければ「行数・単語数・文字数」3つを表示するんだ
wc [オプション]... [ファイル]...
オプション役割
-l, --lines行数のみ表示する
-w, --words単語数のみ表示する
-m, --chars文字数のみ表示する
若木 みどり
色々な使い道がありそうなコマンドだね!test の数値比較とも相性がよさそう!
fold コマンド
若木 しげる
fold行を指定された文字数で改行するよ
fold [オプション]... [ファイル]...
オプション役割
-w 文字数, --width=文字数行を文字数で改行(デフォルトは80)
若木 みどり
へぇ…でも指定の文字数で行を折り返すことはあまりないかも?
若木 しげる
そうだね閲覧のために行を折り返すのではなくテキスト加工で使われることが多いんだ
若木 みどり
例えばどんなのかな?
若木 しげる
以下は英大文字小文字数字で構成されたランダムな16文字を取り出すよ
tr -cd a-zA-Z0-9 < /dev/random | fold -w 16 | head -n 1
若木 みどり
fold で 16 文字で行を折り返しhead で先頭の1行のみ表示することで16 文字だけ取り出しているんだね
若木 みどり(驚き)
tr とか /dev/random とか色々な要素が組み合わさって今まで習ったことの集大成みたいだね!パスワード生成に使えそう!
若木 しげる
/dev/random からの出力は「擬似乱数(pseudorandom numbers)」と呼ばれるもので本物の乱数ではないんだ計算から生成される「乱数っぽい数字」たくさんの値を高速に生成できるけど生成される値が推測可能な場合があるんだ
若木 みどり(驚き)
そうなんだ!パスワードに使うのはちょっと心配だね…
若木 しげる
セキュリティがからむ場合は/dev/random ではなく本物の乱数を返す/dev/urandom を使おう!
まとめ
若木 みどり
今回はテキストを処理するコマンドcut, tr, wc, fold を学んだよ!
若木 しげる
これらもアイデア次第で色々活用できるよ面白い使い方を思いついたら兄にも教えてね!