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

Linuxを勉強したい人向け シェル/bash

こんにちは。

普段はIT業界についてのブログを執筆してるエンジニアです。
» 参考:プログラマーの年収は200万円以下です【IT業界の残酷な成功法則】

今回は、Linuxについての解説記事です。

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

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

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

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

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

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

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

本記事の内容

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

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

$ wc -l file1.txt
   1 file1.txt

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

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

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

$wc -l file1.txt file2.txt file3.txt
       1 file1.txt  
       1 file2.txt  
       1 file3.txt
       3 total

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

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

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

$ cat fruit.txt
apple
orange
apple
banana
melon
strawberry
melon
apple
orange
orange
banana

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

$ grep orange fruit.txt | wc -l
  3

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

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

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

$ wc -l file1.txt | read num filename
$ echo $num
1

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

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

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

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

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

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

$ cat file4.txt
a
b
c
$ wc -l file4.txt
  3 file4.txt
$ cat -n file4.txt
  1  a
  2  b
  3  c

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

Blog TOP  Linuxコマンドを勉強したい人向け|Linuxの使い方 記事まとめ

Linux&Linuxコマンドを勉強したい人向けの記事もくじ

用語解説・技術一般

  "UNIXとLINUX"の違いについて解説します
  CUIとGUIの違い・特徴について解説します

サーバリソースを確認するコマンドの使い方

  【Linux】CPU使用率を確認する3つの方法を解説します
  【Linux】topコマンドで,CPU消費の原因を特定する方法
  【Linux】ps実行時に-efオプションを付ける理由について
  【Linux】メモリ使用率を確認する|容量・空きの確認も
  【Linux】ディスク容量を確認する|ディスク容量監視も

ファイル操作に関するコマンドの使い方

  【Linux】ファイルの行数をカウントする方法を解説
  【Linux】文字コード変換ならiconvコマンド1択です
  【Linux】/dev/nullを、エンジニアが使う2つの目的
  【Linux】findのexecオプションの使い方とその注意点
  【Linux】findの結果から圧縮ファイルを作るコマンド
  【Linux】hostsの場所はどこ?→/etc/hostsにあります
  【Linux】touchコマンドで,時刻更新&空ファイル作成

Linux管理者用コマンドの使い方

  【Linux】再起動コマンド(shutdown)の使い方と注意点

よく使う便利なコマンドの使い方

  【Linux】改行なしでechoコマンドを使う時の -nオプション
  【Linux】sleepコマンドの使用例と注意点について解説する
  【Linux】rmコマンドでディレクトリを削除する方法を解説
  【Linux】ファイルを削除するコマンド2選【rm以外もあり】
  【Linux】awkの区切り文字を指定する,-Fオプションを解説
  【Linux】sedで文字列の置換をするeオプションを解説する
  【Linux】dateコマンドのフォーマットとその便利な使い方
  【Linux】大文字から小文字に変換する方法【小文字から大文字も】

シェルの便利機能

  【Linux】コマンド履歴を検索する【Ctrl+r】