Contents

Linux中WC命令简介

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. 结合wc和 grep

wc与其他 Linux 命令结合使用 可以让我们执行一些有用的任务。 结合grepwc给出一组文件中出现的次数。

例如,假设我们需要计算出在多个日志文件中发生了多少特定类型的错误。

让我们看看我们的第一个示例日志文件:

% 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

现在,我们的第二个:

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

如果我们 使用 -c标志执行grep,我们将按文件分类:

% 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

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