【Shell】パイプラインを使用したファイルおよびログ調査

■パイプラインの使い方

コマンドの出力結果について、リダイレクト(※)を使用してファイル出力することもできるが、別のコマンドのインプットとして実行する方法もある。
この方法をパイプラインと呼び、以下のように実装する。

コマンド1 | コマンド2

上記のようにパイプライン「 | 」を使用することで、「コマンド1」の実行結果をインプットに「コマンド2」を実行することができる。

▼パイプラインの実行イメージ

・「 ls 」コマンドを実行し、ファイル情報を出力。
・出力結果をインプット情報として「 grep 」コマンドを実行。


(※)リダイレクトについての参照先

■パイプラインの使用例

▼ディレクトリ内のファイル調査

パイプライン「 | 」を使用して、ディレクトリ内のファイルのうち、特定のファイルまたは件数を表示する。

・ディレクトリ内のファイル情報をすべて表示

$ ls /work
hoge1.conf  hoge1.txt   hoge2.html  hoge3.conf  hoge3.txt
hoge1.html  hoge2.conf  hoge2.txt   hoge3.html

全量表示させて、任意のファイルを探すこともできるが、量が多くなると大変であるため、「 ls 」の結果について、「 grep 」を実行する。


・ディレクトリ内のファイ情報のうち、テキストファイルのみ表示

$ ls /work | grep '.txt'
hoge1.txt
hoge2.txt
hoge3.txt

・ディレクトリ内のファイ情報のうち、テキストファイルの件数を表示

$ ls /work | grep '.txt' | wc -l
3

▼ログファイル調査

パイプライン「 | 」を使用して、ログファイル調査を行う。

・ログファイルの全量表示

$ cat information.log
2022/2/22 4:00 info:処理1開始
2022/2/22 4:05 info:処理1正常終了
2022/2/22 4:10 info:処理2開始
2022/2/22 4:20 info:処理2正常終了
2022/2/22 4:30 info:処理3開始
2022/2/22 4:40 info:処理3正常終了
2022/2/23 4:00 info:処理1開始
2022/2/23 4:05 info:処理1正常終了
2022/2/23 4:10 info:処理2開始
2022/2/23 4:20 info:処理2正常終了
2022/2/23 4:30 info:処理3開始
2022/2/23 4:40 info:処理3正常終了
2022/2/24 4:00 info:処理1開始
2022/2/24 4:05 error:処理1異常終了
2022/2/24 4:10 info:処理2開始
2022/2/24 4:20 info:処理2正常終了
2022/2/24 4:30 info:処理3開始
2022/2/24 4:40 info:処理3正常終了

ログファイル全量からエラーを探したり、特定の日付について検索する場合、「 cat 」の実行結果に対して「 grep 」を実行する。


・ログファイルからエラー部分のみ表示

$ cat information.log | grep 'error'
2022/2/24 4:05 error:処理1異常終了

・ログファイルから日付で抽出

$ cat information.log | grep '2022/2/23'
2022/2/23 4:00 info:処理1開始
2022/2/23 4:05 info:処理1正常終了
2022/2/23 4:10 info:処理2開始
2022/2/23 4:20 info:処理2正常終了
2022/2/23 4:30 info:処理3開始
2022/2/23 4:40 info:処理3正常終了

コメント