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内容的行数