【Linux】ファイルの行数をカウントするには

Linux シェル/bash

Linux環境でファイル行数のカウント方法を調べる人

Linux環境でファイル行数のカウント方法を調べる人
「Linuxのコマンドを使って、ファイルの行数を数える方法が知りたいです。複数のファイルの行数の集計や、条件に合致した行数の求め方についてもコピペで使える具体的なコマンド・オプションを教えて欲しいです。」

こんな悩みを解決します。

この記事を書いている私はIT業界歴12年、うちサーバエンジニア歴6年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやmac、Linuxなど様々なUNIX系環境を扱ってきました。

これまでの経験を踏まえ、コマンドの解説に留まらず実務視点で利用方法を記事にしました。お役にたちましたら幸いです。

本記事ではLinux/Macの環境を前提にしています

本記事では、LinuxまたはMac環境を前提にしています。それ以外のUNIX環境では一部の動作が異なることがあります。

本記事の内容

wcでファイルの行数をカウントする

ファイルの行数をカウントするには、wc -lを使います。

結果は①ファイル内の行数、②ファイル名の順に出力します。

wcで複数ファイルの行数を集計する

では、複数ファイルに対して行数を調べたい場合はどうでしょうか。同じように引数にファイル名を渡すだけです。

この場合、(1)各ファイルの行数、(2)トータルの行数の順に出力されます。

wcで条件に合致した行数を集計する

次に、ある条件に合致した行数だけを集計したい場合です。これはgrepコマンドと組み合わせて集計します。
例として、様々なフルーツの名前が書かれたファイル(fruit.txt)から、オレンジの出てきた数を集計したいと思います。

grepを使って条件(orangeのみ)付きでwcを実行し集計してみます。

この例では、ファイル内にオレンジが3回出てきたことが判ります。grepとwcの組み合わせは、エンジニアがログ解析などの業務でよく使う組み合わせです。どういう時に使うかは後述します

wcの結果から行数だけを取得する

wcコマンドの使用上、行数だけを出力することができず、ファイル名なども合わせて表示されてしまいます。しかしシェルスクリプトなどで、行数だけを取得したい場合もあります。そのような場合は以下のようにして値を取得します。

これで、変数numにファイルの行数だけを格納することができました。これで結果をシェルスクリプトなどで再利用できるようになりました。

エンジニアが業務でwcコマンドを使う例

wc -lで行数をカウントする手順は、内容のわからないファイルに対してcatやgrepを行う前によく使われます。
知らないファイルをいきなりcatやgrepをしてしまうと、端末上に膨大な行の結果が出力されてしまう恐れがあるからです。

また、特定の文言を指定したgrepと組み合わせたログ解析の目的でも使われます。WEBサーバ上の特定のアプリケーションに対するアクセス件数を調査したり、バッチ処理の結果を調査する際にも有用です。

ファイル内の行数を表示するには

単純な行数のカウントではなく、ファイル内の行数を確認するには、wcでhなくcat -nを使います。

今回は以上です。参考になりますと幸いです。