Linux Shell对行数进行统计的方法

1.统计一个文件的行数可以用以下命令:

grep -c "" xxx.txt

grep -n  ""  xxx.txt | wc -l

_____________________________________________________

PS:

使用grep -n  “”  xxx.txt 可以对 xxx.txt 的内容显示行号,

比如

grep -n  ""  /etc/passwd

输出结果:
1:root:x:0:0:root:/root:/bin/bash
2:daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3:bin:x:2:2:bin:/bin:/bin/sh
4:sys:x:3:3:sys:/dev:/bin/sh
5:sync:x:4:65534:sync:/bin:/bin/sync
6:games:x:5:60:games:/usr/games:/bin/sh
7:man:x:6:12:man:/var/cache/man:/bin/sh
8:lp:x:7:7:lp:/var/spool/lpd:/bin/sh
9:mail:x:8:8:mail:/var/mail:/bin/sh
10:news:x:9:9:news:/var/spool/news:/bin/sh

....

______________________________________________________

cat xxx.txt | wc -l

______________________________________________________

PS:

使用cat -n xxx.txt的方式,也可以输出带行号的文本内容

而且比grep -n的效果要好

比如 cat -n /etc/passwd
     1  root:x:0:0:root:/root:/bin/bash
     2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
     3  bin:x:2:2:bin:/bin:/bin/sh
     4  sys:x:3:3:sys:/dev:/bin/sh
     5  sync:x:4:65534:sync:/bin:/bin/sync
     6  games:x:5:60:games:/usr/games:/bin/sh
     7  man:x:6:12:man:/var/cache/man:/bin/sh
     8  lp:x:7:7:lp:/var/spool/lpd:/bin/sh
     9  mail:x:8:8:mail:/var/mail:/bin/sh
    10  news:x:9:9:news:/var/spool/news:/bin/sh

...

另外,更简单的一个带行号输出文件内容的命令是nl,相当于cat -n

______________________________________________________

2.统计命令执行结果的行数

find /etc/ -type f | wc -l     #统计/etc/下文件的个数

find /etc/ -type f -name "*iscsi*"  | wc -l  #统计文件名中带有iscsi的文件数

find /etc/ -type f -exec grep "mdadm" {} \; | wc -l   #统计/etc/目录下,带有mdadm内容的行数

find /etc/ -type f -name "*iscsi*" | awk 'END{print NR}'  #统计文件名中带有iscsi的文件数

find /etc/ -type f -exec grep "mdadm" {} \; | awk 'END{print NR}'  #统计/etc目录下,带有mdadm内容的行数

相关推荐