以前のエントリーに引き続き、シェルスクリプトでログを解析する処理があってそこで覚えたことなどをまとめておきます。
ファイル読み込み
ファイルの内容を一気に読み込むならいろいろなコマンドがありますが一行ずつ読み込んでその内容判断していく・・みたいな処理が以外に探すのが時間がかかりました。
下記のコマンドで一行ずつ読み込みます。
1 2 3 4 5 |
file_path="/home/user/sample.txt" while read line; do #この中で一行あたりの処理を書きます。 echo $line done < $file_path |
リンク
switch文
通常のプログラミング言語より柔軟性が若干あります。
基本パターン
1 2 3 4 5 6 7 8 9 10 11 |
switch $var in hoge ) # varがhogeだったら # 何らかの処理 ;; foo ) # varがfooだったら # 何らかの処理 ;; * ) # ここはdefaultの意味(hoge,fooに引っかからない場合はすべてここ) ;; esac #case文終了の合図 |
条件にorを使用
1 2 3 4 5 6 |
switch $var in hoge | foo ) # varがhogeかfooだったら #何らかの処理 ;; ・・・・ esac |
正規表現を使用
1 2 3 4 5 6 |
switch $var in [a-z] ) # varが半角英字だったら #何らかの処理 ;; ・・・・ esac |
こちらに応用技が載っています。
UNIX & Linux コマンド・シェルスクリプト リファレンス case 文の使用方法
タブ時の扱い
プログラミング言語だと”\t”と記述することが多いですが、シェルスクリプトの場合、シングルクオートでくくるか、echo時に-nのオプションが必要です。
逆にダブルクオートだとそのまま文字として出力されます。
リンク
空文字判定
これまたちょっと特殊なパターンです。
リンク
変数から変数への代入
再代入の場合には代入される側は$がいらないようです。
リンク
シェルスクリプト(sh/bash/zsh)で変数から変数へ代入する方法について
まだ全然整理できていないのでまとめる必要がいろいろありそうですね。
ログをみる処理など、応用範囲は広いと思うのでここで勉強しておきたいです。