linux统计文件中不为空的行数的命令是什么,用 awk -F
时间: 2024-09-29 15:03:55 浏览: 50
在Linux中,你可以使用`awk`命令配合通配符来统计文件中非空行的数量。假设你想基于指定的分隔符(`-F`)对文件内容进行计数,可以这样做:
```bash
awk -F'\n' '{ if ($0 != "") print } END {print "非空行总数: ", NR}' yourfile.txt
```
这里解释一下命令:
- `awk`: Linux强大的文本处理工具。
- `-F'\n'`: 指定输入字段分隔符为换行符,这意味着每一行会被视为一个字段。
- `{ if ($0 != "") print }`: 这个条件判断如果当前行不是空行(即 `$0` 不等于空字符串),就打印出来。
- `END {print "非空行总数: ", NR}`: 当所有数据处理完后,会执行这个块里的代码,`NR`变量包含了自文件开始以来处理过的记录数,也就是非空行数。
如果你想要将结果直接输出到屏幕而不仅仅是终端提示,可以去掉最后一个`print`并只保留`END`部分,例如:
```bash
awk -F'\n' 'NF > 0' yourfile.txt | wc -l
```
这里先筛选出非空行,然后通过`wc -l`计算行数。
相关问题
linux awk命令详解
awk是一种强大的文本处理工具,它可以在文本流中查找和替换特定的模式,并对匹配的行进行一定的处理。awk最初是由Alfred Aho、Peter Weinberger和Brian Kernighan在1977年开发的。
awk命令的一般语法如下:
```
awk 'pattern { action }' file
```
其中,pattern是一个模式,用于匹配文本流中的行;action是一个动作,用于对匹配的行进行处理;file是要处理的文件名。
下面是awk命令的常用选项和参数:
- -F:指定字段分隔符;
- -f:指定awk脚本文件;
- -v var=value:定义一个变量;
- -W:指定POSIX风格的选项;
- -L:指定awk库文件路径。
下面是awk命令的一些常用用法:
1.打印文件中的所有行
```
awk '{print}' file
```
2.打印文件中指定的列
```
awk '{print $1,$3}' file
```
3.使用分隔符打印文件中指定的列
```
awk -F: '{print $1,$3}' /etc/passwd
```
4.统计文件中的行数
```
awk 'END{print NR}' file
```
5.使用if语句进行条件判断
```
awk '{if($1=="root") print $0}' /etc/passwd
```
6.使用for循环进行迭代处理
```
awk '{for(i=1;i<=NF;i++) print $i}' file
```
7.使用数组进行数据处理
```
awk '{a[$1]+=$2} END{for(i in a) print i,a[i]}' file
```
以上是awk命令的一些常用用法,当然,awk还有很多高级用法,这里就不一一列举了。
Linux中统计/var/log目录下扩展名为.log的文件行数
可以使用以下命令来统计/var/log目录下扩展名为.log的文件行数:
```bash
find /var/log -name "*.log" -type f -exec wc -l {} + | awk '{total += $1} END {print total}'
```
解释:
1. `find /var/log -name "*.log" -type f`:在/var/log目录下查找扩展名为.log的文件。
2. `-exec wc -l {} +`:对于找到的每个文件,使用`wc -l`命令统计其行数,并将所有结果传递给awk命令。
3. `awk '{total += $1} END {print total}'`:对所有文件的行数进行求和,并输出结果。
注意,这个命令将递归地搜索/var/log目录及其子目录中的所有.log文件。如果您只想在/var/log目录中搜索,请使用以下命令:
```bash
wc -l /var/log/*.log | awk '{total += $1} END {print total}'
```
阅读全文