はじめに
ログ調査でファイルの行数がどれぐらいあるのか?ログファイルの行数が多いのかどうかファイルを開く前に行数や単語数などを確認できれば嬉しいですね。
大量のログファイルを開く場合は、メモリなどにも気をつけなければならないので、この記事ではwcコマンドの基本的な使い方と使えそうなオプションについて説明します。
まずはサンプルで下記のようなファイルを作成しました。
サンプルファイルについては、記事の最後に用意しているので、参考にしてください。
wcコマンドとは
wcコマンドでできることは、指定ファイルの行数、単語数、文字数、バイト数などをカウントすることができます。
// 基本的な使い方
wc {オプション} {ファイル名}
// サンプル
wc error.log
15 222 4703 error.log
行数 単語数 バイト数 ファイル名のように出力される
// オプションを指定する場合
wc -l error.log
// サンプル
15 error.log
-lを指定することで、ファイルの行数を確認できる。error.logには15行あるということ。
wcコマンドのオプション
| オプション | 説明 |
|---|---|
-l |
行数を表示 |
-m |
文字数を表示 |
-w |
単語数を表示 |
-c |
バイト数を表示 |
// -lオプション
wc -l error.log
// サンプル出力
15 error.log
error.logには、15行あるということ。
// -wオプション
wc -w error.log
// サンプル出力
222 error.log
error.logには、222単語あるということ。
// -mオプション
wc -m error.log
// サンプル出力
4703 error.log
error.logには、4703文字あるということ。
// -cオプション
wc -c error.log
// サンプル出力
4703 error.log
error.logには、4703バイトあるということ。
sortコマンドと合わせ技
wc -l *.log | sort -n
// サンプル出力
7 server.log
15 error.log
23 laravel.log
23 sample.log
27 data.log
95 total
昇順でファイルの行数順に並べ替える。
ちなみに降順に並び替える場合は、sortコマンドで-rも指定する。
wc -l *.log | sort -n -r
// サンプル出力
95 total
27 data.log
23 sample.log
23 laravel.log
15 error.log
7 server.log
以上終わりです。
<参考記事>
>>>【Linux】less・grepを徹底的に解説!コマンド一覧やコマンド例でわかりやすく
>>>私が運営するブログはこちら。メインは技術ブログですが、副業やポイ活についても紹介!
サンプルログファイル
data.log
hokkaido
aomori
iwate
yamagata
hukushima
miyagi
nigata
toyama
saitama
tokyo
aichi
okayama
osaka
hyogo
nagano
gunma
yamanashi
shizuoka
gihu
ishikawa
hukui
tochigi
ibaraki
hukuoka
kumamoto
kagoshima
okinawa
error.log
[2022-03-24 18:11:42] local.ERROR: Undefined variable $page {"view":{"view":"/var/www/resources/views/app.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-1110990079
data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#304</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-24 18:19:56] local.ERROR: View [layouts.app] not found. {"view":{"view":"/var/www/resources/views/top.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-1527968188 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#304</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-24 19:02:16] local.ERROR: View [header] not found. {"view":{"view":"/var/www/resources/views/layouts/common.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-446646137 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#304</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-25 01:05:00] local.ERROR: View [footer] not found. {"view":{"view":"/var/www/resources/views/top.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-1884878951 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#304</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-25 01:05:29] local.ERROR: Undefined property: Illuminate\View\Factory::$startSection {"view":{"view":"/var/www/resources/views/components/footer.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-357600466 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#304</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-26 16:12:28] local.ERROR: View [layouts.common] not found. {"view":{"view":"/var/www/resources/views/top.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-405570418 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#302</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-26 16:39:48] local.ERROR: View [components.sidebar] not found. {"view":{"view":"/var/www/resources/views/top.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-270753157 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#304</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-27 13:00:01] local.ERROR: Undefined variable $page {"view":{"view":"/var/www/resources/views/layouts/main.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-787196643 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#329</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-27 13:00:10] local.ERROR: Undefined variable $page {"view":{"view":"/var/www/resources/views/layouts/main.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-168221982 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#329</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-27 13:00:39] local.ERROR: Undefined variable $page {"view":{"view":"/var/www/resources/views/layouts/main.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-23
[2022-03-27 13:00:39] local.ERROR: Undefined variable $page {"view":{"view":"/var/www/resources/views/layouts/main.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-236149045 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#329</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-27 13:01:34] local.ERROR: Undefined variable $page {"view":{"view":"/var/www/resources/views/layouts/main.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-1411043516 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#329</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-27 13:01:45] local.ERROR: Undefined variable $page {"view":{"view":"/var/www/resources/views/layouts/main.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-1122182679 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#329</a><samp data-depth=1 class=sf-dump-expanded>
[2022-03-27 14:11:34] local.ERROR: Undefined variable $page {"view":{"view":"/var/www/resources/views/layouts/main.blade.php","data":{"errors":"<pre class=sf-dump id=sf-dump-1189042780 data-indent-pad=\" \"><span class=sf-dump-note>Illuminate\\Support\\ViewErrorBag</span> {<a class=sf-dump-ref>#321</a><samp data-depth=1 class=sf-dump-expanded>
laravel.log
[2022-02-06 02:48:07] local.ERROR: SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = blogs and table_name = migrations and table_type = 'BASE TABLE') {"exception":"[object] (Illuminate\\Database\\QueryException(code: 2002): SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = blogs and table_name = migrations and table_type = 'BASE TABLE') at /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:712)
[stacktrace]
#0 /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(784): Illuminate\\Database\\Connection->runQueryCallback('select * from i...', Array, Object(Closure))
#1 /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(764): Illuminate\\Database\\Connection->tryAgainIfCausedByLostConnection(Object(Illuminate\\Database\\QueryException), 'select * from i...', Array, Object(Closure))
#2 /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(675): Illuminate\\Database\\Connection->handleQueryException(Object(Illuminate\\Database\\QueryException), 'select * from i...', Array, Object(Closure))
#3 /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(376): Illuminate\\Database\\Connection->run('select * from i...', Array, Object(Closure))
#4 /var/www/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php(44): Illuminate\\Database\\Connection->select('select * from i...', Array)
#5 /var/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php(169): Illuminate\\Database\\Schema\\MySqlBuilder->hasTable('migrations')
#6 /var/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(652): Illuminate\\Database\\Migrations\\DatabaseMigrationRepository->repositoryExists()
#7 /var/www/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(106): Illuminate\\Database\\Migrations\\Migrator->repositoryExists()
#8 /var/www/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(77): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->prepareDatabase()
#9 /var/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(585): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->Illuminate\\Database\\Console\\Migrations\\{closure}()
#10 /var/www/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(94): Illuminate\\Database\\Migrations\\Migrator->usingConnection(NULL, Object(Closure))
#11 /var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->handle()
#12 /var/www/vendor/laravel/framework/src/Illuminate/Container/Util.php(40): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#13 /var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#14 /var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#15 /var/www/vendor/laravel/framework/src/Illuminate/Container/Container.php(653): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#16 /var/www/vendor/laravel/framework/src/Illuminate/Console/Command.php(136): Illuminate\\Container\\Container->call(Array)
#17 /var/www/vendor/symfony/console/Command/Command.php(298): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#18 /var/www/vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#19 /var/www/vendor/symfony/console/Application.php(1015): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#20 /var/www/vendor/symfony/console/Application.php(299): Symfony\\Component\\Console\\Application->doRunCommand(Object(Illuminate\\Database\\Console\\Migrations\\MigrateCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
sample.log
make: "Honda"
color: "Red"
number: "3311"
make: "ford"
color: "Red"
number: "3311"
make: "Honda"
color: "Black"
number: "8345"
make: "Rex"
color: "Red"
number: "2244"
make: "Honda"
color: "Red"
number: "9998"
make: "Honda"
color: "Blue"
number: "4455"
server.log
ユーザー1がアクセス
ユーザー1が登録処理を実行
500 ERROR:DBエラーです
404 ERROR:ページがありません
409 ERROR:更新失敗エラーです
403 ERROR:権限エラーです
400 ERROR:バリデーションエラーです
◯エンジニア基礎力を向上させる前に、AIに頼理すぎてませんか?エンジニアとして一生の基礎力がつくおすすめの技術本を紹介しているので、ぜひ要チェックです!
【AIに頼りすぎではないですか?】エンジニア基礎力を底上げするおすすめ技術書まとめ