0027. shell命令--wc

目录

27. shell命令--wc

功能说明

语法格式

选项说明

实践操作

注意事项

其它解释


27. shell命令--wc

功能说明

        wc 是 Linux 中的一个非常有用的命令,用于计算文件中的字节数、字数和行数。它的名字来源于 "word count"(字数统计),但实际上它可以做的更多。

        wc 命令 统计指定文件中的字节数、字数、行数,并将统计结果显示输出。利用 wc 指令我们可以计算文件的 Byte 数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则 wc 指令会从标准输入设备读取数据。wc 同时也给出所指定文件的总统计数。

语法格式

wc [选项] [文件名]...

SYNOPSIS
       wc [OPTION]... [FILE]...
       wc [OPTION]... --files0-from=F

选项说明

  • -c 或 --bytes:显示字节数。
  • -l 或 --lines:显示行数。
  • -m:统计字符数,或--chars:显示字符数。
  • -w 或 --words:显示字数。
  • -L 或 --max-line-length:显示最长行的长度。
  • --help:显示帮助信息。
  • --version:显示版本信息。

实践操作

1. 环境准备
mkdir -p /test/wc
cd /test/wc
seq 13 >file1.txt
seq 14 >file2.txt

2. 显示指定文件的行数、字数,以及字节数
cat file1.txt
wc file1.txt    #默认的情况下,wc将计算指定文件的行数、字数,以及字节数
#13   13   30    file1.txt
#行数 字数 字节数 文件名
wc -l file1.txt    #显示行数
wc -w file1.txt    #显示字数
wc -c file1.txt    #显示字节数
wc  -lc file1.txt    #也可以同时指定多个选项
ll file1.txt    #查看文件大小
ls
wc -l *    #统计多个文件
wc -l file1.txt file2.txt | awk 'END{print $1}'    #只显示总数

3. 只打印统计数字不打印文件名
wc -l file1.txt
wc -l < file1.txt
wc -w file1.txt
wc -w <file1.txt

4. 显示最长行的长度
wc -L /etc/passwd
wc -L file1.txt
echo 123 >>file1.txt
wc -L file1.txt
echo 123456 >>file1.txt
wc -L file1.txt

5. 结合其它命令使用
expr $(ls -l | wc -l) - 1    #用来统计目录下的文件数(不包含隐藏文件)方法1 
ls |wc -l    #用来统计目录下的文件数(不包含隐藏文件)方法2
expr $(ls -l /etc| wc -l) - 1
ls /etc |wc -l
ps -ef |wc -l
grep nologin /etc/passwd |wc -l
find /test -name file1.txt -exec wc -l {} +   
find /test -name file1.txt -print0 |xargs -0 wc -l

命令示例:1. 环境准备

mkdir -p /test/wc
cd /test/wc
seq 13 >file1.txt
seq 14 >file2.txt

输出结果:

[root@MineGi ~]# mkdir -p /test/wc
[root@MineGi ~]# cd /test/wc
[root@MineGi /test/wc]# seq 13 >file1.txt
[root@MineGi /test/wc]# seq 14 >file2.txt
[root@MineGi /test/wc]# 

命令示例:2. 显示指定文件的行数、字数,以及字节数

cat file1.txt
wc file1.txt
wc -l file1.txt  
wc -w file1.txt  
wc -c file1.txt  
wc  -lc file1.txt
ll file1.txt   
ls
wc -l *   
wc -l file1.txt file2.txt | awk 'END{print $1}' 

输出结果:

[root@MineGi /test/wc]# cat file1.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@MineGi /test/wc]# wc file1.txt
13 13 30 file1.txt
[root@MineGi /test/wc]# wc -l file1.txt  
13 file1.txt
[root@MineGi /test/wc]# wc -w file1.txt  
13 file1.txt
[root@MineGi /test/wc]# wc -c file1.txt  
30 file1.txt
[root@MineGi /test/wc]# wc  -lc file1.txt
13 30 file1.txt
[root@MineGi /test/wc]# ll file1.txt   
-rw-r--r-- 1 root root 30 12月  4 16:33 file1.txt
[root@MineGi /test/wc]# ls
file1.txt  file2.txt
[root@MineGi /test/wc]# wc -l *   
13 file1.txt
14 file2.txt
27 总用量
[root@MineGi /test/wc]# wc -l file1.txt file2.txt | awk 'END{print $1}' 
27
[root@MineGi /test/wc]# 

命令示例:3. 只打印统计数字不打印文件名

wc -l file1.txt
wc -l < file1.txt
wc -w file1.txt
wc -w <file1.txt

输出结果:

[root@MineGi /test/wc]# wc -l file1.txt
13 file1.txt
[root@MineGi /test/wc]# wc -l < file1.txt
13
[root@MineGi /test/wc]# wc -w file1.txt
13 file1.txt
[root@MineGi /test/wc]# wc -w <file1.txt
13
[root@MineGi /test/wc]# 

命令示例:4. 显示最长行的长度

wc -L /etc/passwd
wc -L file1.txt
echo 123 >>file1.txt
wc -L file1.txt
echo 123456 >>file1.txt
wc -L file1.txt

输出结果:

[root@MineGi /test/wc]# wc -L /etc/passwd
68 /etc/passwd
[root@MineGi /test/wc]# wc -L file1.txt
2 file1.txt
[root@MineGi /test/wc]# echo 123 >>file1.txt
[root@MineGi /test/wc]# wc -L file1.txt
3 file1.txt
[root@MineGi /test/wc]# echo 123456 >>file1.txt
[root@MineGi /test/wc]# wc -L file1.txt
6 file1.txt
[root@MineGi /test/wc]# 

命令示例:5. 结合其它命令使用

expr $(ls -l | wc -l) - 1  
ls |wc -l
expr $(ls -l /etc| wc -l) - 1
ls /etc |wc -l
ps -ef |wc -l
grep nologin /etc/passwd |wc -l
find /test -name file1.txt -exec wc -l {} +   
find /test -name file1.txt -print0 |xargs -0 wc -l

输出结果:

[root@MineGi /test/wc]# expr $(ls -l | wc -l) - 1  
2
[root@MineGi /test/wc]# ls |wc -l
2
[root@MineGi /test/wc]# expr $(ls -l /etc| wc -l) - 1
179
[root@MineGi /test/wc]# ls /etc |wc -l
179
[root@MineGi /test/wc]# ps -ef |wc -l
106
[root@MineGi /test/wc]# grep nologin /etc/passwd |wc -l
16
[root@MineGi /test/wc]# find /test -name file1.txt -exec wc -l {} +   
  2 /test/cat/file1.txt
  2 /test/cut/file1.txt
 10 /test/diff/file1.txt
 15 /test/wc/file1.txt
 29 总用量
[root@MineGi /test/wc]# find /test -name file1.txt -print0 |xargs -0 wc -l
  2 /test/cat/file1.txt
  2 /test/cut/file1.txt
 10 /test/diff/file1.txt
 15 /test/wc/file1.txt
 29 总用量
[root@MineGi /test/wc]#

注意事项

  • wc 命令中的 "字"(word)定义为由空白字符(空格、制表符或换行符)分隔的字符串。
  • 使用 wc 命令时,可以指定一个或多个文件名作为参数。如果没有指定文件名,wc 命令将从标准输入(stdin)读取数据。
  • wc 命令的输出格式通常为:行数 字数 字节数 文件名(当指定了多个文件时,最后一列会给出所有文件的总行数、总字数和总字节数)。

其它解释

find /test -name file1.txt -exec wc -l {} +

        这条命令会在 /test 目录下搜索所有 file1.txt 文件,并对每个文件执行 wc -l 命令来计算行数。-exec 选项允许你指定一个要对每个找到的文件执行的命令,而 {} 是一个占位符,它会被找到的每个文件的路径替换。+ 符号表示尽可能少地调用 -exec 命令,即尽可能地将多个文件名传递给 wc 命令。

find /test -name file1.txt -print0 |xargs -0 wc -l

        这条命令与上面的 find 和 wc 命令示例类似,但是使用了 xargs 来处理文件名。注意 -print0 和 -0 选项的使用,它们是为了处理文件名中包含空格、换行符或其他特殊字符的情况。-print0 会使用 null 字符(\0)来分隔文件名,而 -0 则告诉 xargs 使用 null 字符作为输入项的分隔符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MineGi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值