1. 序章

このチュートリアルでは、Linux wcコマンドについて説明します。 いくつかの基本的な使用法と、いくつかのより高度な例を紹介します。

2. 基本的な使用法

wc は、ファイルのリストまたは標準入力のいずれかで、提供された入力の単語、行、またはバイトをカウントするための便利なユーティリティです。 いくつかの基本的な使用法を見てみましょう。

サンプルファイルから始めましょう:

% cat colors.txt 
Red Orange
Purple
Green
Brown
Blue
Black

まず、ファイルの行数を取得しましょう。

% wc -l colors.txt 
       6 colors.txt

単語数を数えることもできます:

% wc -w colors.txt 
       7 colors.txt

ファイル内の文字数を数えることもできます。

% wc -m colors.txt 
      41 colors.txt

また、テキストファイルを使用しているため、バイト数を数えると同じ数になります。

% wc -c colors.txt 
      41 colors.txt

3. wcgrepの組み合わせ

wc を他のLinuxコマンドと組み合わせると、いくつかの便利なタスクを実行できます。

grep と組み合わせて、wcは一連のファイルでの発生回数を示します。

たとえば、特定のタイプのエラーが複数のログファイルで発生した数を把握する必要があるとします。

最初のサンプルログファイルを見てみましょう。

% cat log_mon.txt 
12:31: error - broken pipe
12:33: warn - missing input
12:35: error - broken pipe
12:37: error - service down
12:39: warn - retry failed

そして今、私たちの2番目:

% cat log_tues.txt 
12:41: error - broken pipe
12:43: warn - missing input
12:45: error - broken pipe
12:49: warn - retry failed

grep-cフラグで実行すると、ファイルごとの内訳が表示されます。

% grep -c "broken pipe" log*.txt
log_mon.txt:2
log_tues.txt:2

ただし、合計数を取得するには、wc-l(行数)オプションを使用します。

% grep "broken pipe" log*.txt | wc -l
       4

grep はすべての結果を標準入力に送信し、wcはその入力の行カウントを実行します。

4. wcfindの組み合わせ

別の例として、 wc をいくつかのコマンドと組み合わせて、プロジェクトのソースコードの行数を数えましょう。 BaeldungLombokプロジェクトのデモを見ているとしましょう。 find xargs 、および wc を組み合わせて、プロジェクト内のソースコードの行数を取得できます。

% find ./src/main -name "*.java" | xargs wc -l
      18 ./src/main/java/com/baeldung/lombok/getter/GetterBooleanPrimitiveSameAccessor.java
      16 ./src/main/java/com/baeldung/lombok/getter/GetterBooleanPrimitive.java
      13 ./src/main/java/com/baeldung/lombok/getter/GetterBooleanSameAccessor.java
      15 ./src/main/java/com/baeldung/lombok/getter/GetterBoolean.java
      15 ./src/main/java/com/baeldung/lombok/getter/GetterBooleanType.java
      36 ./src/main/java/com/baeldung/lombok/intro/GetterLazy.java
      16 ./src/main/java/com/baeldung/lombok/intro/HasContactInformation.java
      43 ./src/main/java/com/baeldung/lombok/intro/User.java
      22 ./src/main/java/com/baeldung/lombok/intro/ApiClientConfiguration.java
      11 ./src/main/java/com/baeldung/lombok/intro/ClientBuilder.java
      25 ./src/main/java/com/baeldung/lombok/intro/LoginResult.java
      29 ./src/main/java/com/baeldung/lombok/intro/UserEvent.java
      26 ./src/main/java/com/baeldung/lombok/intro/Utility.java
      17 ./src/main/java/com/baeldung/lombok/intro/ContactInformationSupport.java
      11 ./src/main/java/com/baeldung/lombok/intro/ImmutableClient.java
      39 ./src/main/java/com/baeldung/lombok/builder/customsetter/Message.java
      25 ./src/main/java/com/baeldung/lombok/builder/singular/Person.java
      14 ./src/main/java/com/baeldung/lombok/builder/singular/Sea.java
      17 ./src/main/java/com/baeldung/lombok/builder/defaultvalue/Pojo.java
      19 ./src/main/java/com/baeldung/lombok/builder/inheritance/buildermethodname/Child.java
      10 ./src/main/java/com/baeldung/lombok/builder/inheritance/buildermethodname/Parent.java
      16 ./src/main/java/com/baeldung/lombok/builder/inheritance/buildermethodname/Student.java
      11 ./src/main/java/com/baeldung/lombok/builder/inheritance/superbuilder/Child.java
      11 ./src/main/java/com/baeldung/lombok/builder/inheritance/superbuilder/Parent.java
      10 ./src/main/java/com/baeldung/lombok/builder/inheritance/superbuilder/Student.java
      11 ./src/main/java/com/baeldung/lombok/builder/ClientBuilder.java
      11 ./src/main/java/com/baeldung/lombok/builder/ImmutableClient.java
      13 ./src/main/java/com/baeldung/lombok/builder/Widget.java
     520 total

5. 結論

この記事では、Linux wcコマンドの使用方法を見てきました。 いくつかの基本的なオプションと、 wc を他のLinuxコマンドと組み合わせて、すっきりとしたワンライナーを作成する方法を見てきました。