linux ファイルの内容確認コマンド解説

こんにちは。webチームの黒岩です。
LinuxやEC2インスタンスのプロンプトにて、ログを逐一記録するtxtファイルだったり、膨大な容量のファイルだったりを確認する際、どうしているでしょうか?
特定の内容だけを抜粋したい、ここからここまでの行だけ表示させたい
等々・・。

今回はそんな悩みを解決に導くべく、ファイル関係のコマンドをシチュエーション別に紹介します。

目次

  • シンプルに内容を確認したい
  • 特定の行だけを表示したい
  • 更新をリアルタイムで追いたい
  • 文字列で検索をかけたい
  • 文字列で検索をかけた結果を先頭からn行だけ表示させたい

シンプルに内容を確認したい

ファイル内容の確認コマンドと言ったらやはりこれでしょう。

cat file1.txt

そして複数のファイルを指定することで、内容を続けて表示させることも可能です。(そもそもcatコマンドの由来はここからきている)

cat file1.txt file2.txt

特定の行だけを表示したい

最初の行

これにはこのコマンドがあります。

head file1.txt

さらに、headコマンドのすぐ後に行数をオプションで指定して先頭から指定した行数だけ表示が可能です。こんな具合です。

head -n 30 file1.txt

↑先頭から30行表示させる
行数のオプションを指定しない場合、デフォルトの10行を表示します。

最後の行

tail file.txt

行数の指定はheadと同じなので割愛です。

ファイルの真ん中だけを抜き出す

headコマンドとtailコマンドを|(パイプ)を使って使用することで、
ファイルの真ん中(例:6行〜10行目)を抜き出すと言ったことも可能になります。

head -n 10 index.html | tail -n 5

最初にheadコマンドで先頭10行を切り出しパイプで繋げたtailコマンドでその10行から末尾5行を取り出すといった方法です。

更新をリアルタイムで追いたい

これには先ほど言ったtailコマンドが役に立ちます。
tailコマンドのオプションとして-fを指定することで、例えばログのtxtファイルなどが更新されたタイミングで、中止キー(Ctrl+C)が押されるまでの間出力し続けます。

tail -f file.txt

文字列で検索をかけたい

文字列の含む行を出力する、grepコマンドがあります。

grep 検索したい文字列 file1.txt

文字列で検索をかけた結果を先頭からn行だけ表示させたい

grepコマンドで検索する文字列を含む行を検索出来たはいいけど数が多すぎて最初だけでいいから表示させたいというシチュエーション、何気に多いと思います。
そんな時は、先ほど紹介したファイルの真ん中を抜き出すのと同じ手法を用います。

まず、grepコマンドで検索したい文字列の行をすべて表示させ、そこからheadコマンドで絞っていく寸法です。

まずgrepコマンドから

grep 検索したい文字列 file1.txt

そこにheadコマンドをパイプでつなぎます。

grep 検索したい文字列 file1.txt | head -n 30