如何在Linux命令行中统计文件内容?

wc命令啊,这玩意儿用得贼多。
简单说,就是数数用的。

行数、单词数、字符数,这三种数都能数。
默认啊,连文件名都给你列出来了。

比如你有个文件叫log.txt,跑个命令:wc log.txt
输出啥呢?一行数字,比如 1 05 03 00log.txt。
这数字啥意思?1 0行、5 0个单词、3 00个字节。
就这么简单。

想只看行数?加个-l就行。
比如系统日志:wc -l /var/log/syslog。
假设输出是 1 5 000,那就是1 万5 千行。

单词数?-w。
字符数?-c。
这俩也类似。

比如统计中文:echo "你好" | wc -m。
输出是2 ,因为中文算一个字符。
用-c呢?输出6 ,因为UTF-8 每个中文字占3 字节。

管道这玩意儿用起来更绝。
比如数日志里带error的行数:grep "error" log.txt | wc -l。
假设输出是3 00,就是3 百行有error。

ls一个目录啊,用wc -l会把目录也数进去,包括.和..。
得用find -maxdepth 1 -type f | wc -l,这样才只数文件。

统计代码行数?grep -v "^$" code.py | wc -l。
这会过滤掉空行,只数有代码的行。

-c和-m啥区别?简单说,-c是按字节算,-m是按字符算。
中文、英文、表情符号,一个都不少。

ls直接用wc -l有坑,它会把所有东西都数进去。
得用ls -1 | wc -l或者find。

大文件?wc跑得飞快,随便开干就行。

多个文件一起算?比如统计所有.log文件的行数:wc -l .log。
这会给你每个文件行数,最后还总行数。

想把结果存起来?用bash变量。
比如行数存到line_count:line_count=$(wc -l < file>
总之,wc + 管道 + grep/find,能干的事儿可多了。
中文文本用-m,动态数据用管道,目录别漏了隐藏文件。

如何在Linux中统计文件行数 Linux wc命令文本统计详解

直接上结论:
1 . 统计单个文件行数:wc -l filename 2 . 统计多个文件行数:wc -l file1 .txt file2 .txt 3 . 仅显示行数(隐藏文件名):grep "错误" logfile.txt | wc -l 4 . 统计单词数:wc -w filename 5 . 统计字节数:wc -c filename 6 . 统计字符数:wc -m filename 7 . 查找特定文件并统计行数:find . -name ".log" -exec wc -l {} + 8 . 统计文件总行数(awk):awk 'END{print NR}' filename 9 . 统计非空行数(awk):awk 'NF>0{count++;}END{print count}' filename 1 0. 统计CSV文件某列唯一值数量:awk -F ',' '{print $2 }' your_file.csv | sort -u | wc -l 1 1 . 统计文件总行数(sed):sed -n '$=' filename 1 2 . 大文件处理:wc逐行读取,内存低 1 3 . 多字节字符集统计:使用-m 1 4 . 二进制文件行数统计:不使用-l选项 1 5 . 文件是否为空:if [ $(wc -l filename | awk '{print $1 }') -eq 0 ]; then echo "文件为空"; fi 1 6 . 统计目录下文件总数:ls -l | grep -v '^total' | wc -l 1 7 . 简单统计:优先使用wc -l 1 8 . 复杂条件统计:结合awk或sed 1 9 . 大文件处理:注意文件系统和I/O 2 0. 多字节字符集:wc -m更准确

掌握Linux文件处理命令:详解wc、sort、uniq、diff

好的,我来用微信聊天的方式来详细解释一下这些命令。

上周有个客人问我,怎么用wc命令统计文件信息?我就给他详细解释了一下。
wc这个命令超级实用,就像你的手机计算器一样,不过它是用来统计文件的。

首先,它有几个常用的选项:
-c:这个选项是用来统计字节数的,就像你数一数你的手机内存用了多少一样。

-l:这个选项用来统计行数,就像数一数你写的诗有多少行。

-m:统计字符数,不过这个选项不能和-c一起用,就像你不可能同时数字和字母一样。

-w:统计字数,这里的字是由空白、跳格或换行分隔的,就像数一数你发的朋友圈有多少个字。

-L:打印最长行的长度,就像问一问你的朋友圈里谁发的照片最长。

然后,我给他举了几个例子:
要统计/etc/hosts文件的字节数,你可以这样写:wc -c /etc/hosts。
输出结果比如是1 5 8 /etc/hosts,这就表示这个文件有1 5 8 个字节。

要统计/etc/passwd文件的行数,你可以这样写:wc -l /etc/passwd。
输出结果比如是4 5 /etc/passwd,这就表示这个文件有4 5 行。

接下来,我给他讲了一下sort命令,这个命令是用来对文件进行排序的,就像你整理你的书架一样。


-n:按数值排序,不转换成浮点数。

-g:按通用数值排序,支持科学计数法。

-f:忽略大小写,就像你不管书是大写还是小写,都放在书架上。

-k:指定排序的起始位置和结束位置。

-t:指定列的分割符。

-r:降序排序,默认是升序。

-h:使用易读性数字排序。

-u:去除重复的行。

-o:将输出写入文件。

我给他举了几个例子:
对file.txt文件进行排序:sort file.txt。

对file.txt文件按数值排序:sort -n file.txt。

去除file.txt文件中的重复行:sort -u file.txt。

然后,我又讲了一下uniq命令,这个命令是用来去除排序过的文件中的重复行的,通常和sort命令一起用。


-c:统计出现的次数。

-d:只显示被计算为重复的行。

-D:显示所有被计算为重复的行。

-u:显示唯一值,即没有重复值的行。

-i:忽略大小写。

最后,我提到了diff命令,这个命令是用来比较两个文件的,就像比较两个人的照片一样。

没有特定选项时,它会直接比较两个文件的不同行。
输出结果会有特定的格式,比如1 c1 表示第一行被改变,<和>分别表示两个文件中对应行的内容。

希望这些解释对你有帮助,有其他问题随时问我哦!