Linux脚本练习之script059-统计文件的行数
Posted 二木成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux脚本练习之script059-统计文件的行数相关的知识,希望对你有一定的参考价值。
script059
题目
注:题目来源于 SHELL1 统计文件的行数。
写一个 bash
脚本以输出一个文本文件 nowcoder.txt
中的行数。
示例,假设 nowcoder.txt
内容如下:
#include <iostream>
using namespace std;
int main()
int a = 10;
int b = 100;
cout << "a + b:" << a + b << endl;
return 0;
那么你的脚本应当输出:
9
脚本一
使用 wc
命令的 -l
选项统计行数,结果只会显示行数:
cat nowcoder.txt | wc -l
脚本二
其中 wc -l nowcoder.txt
会显示文件的总行数和文件名,所以需要使用 awk
命令提取第一个字段域,即总行数。
wc -l nowcoder.txt | awk 'print $1'
脚本三
循环读取文件 nowcoder.txt
中的每一行,然后用一个计数变量 count
来统计总行数,最后输出总行数。没遍历一行,计数器就加一。
#!/bin/bash
count=0
while read line; do
count=$(($count+1))
done < nowcoder.txt
echo "$count"
脚本四
grep
命令的 -c
选项可以统计匹配到的行数。而 grep ".*"
表示匹配任何行,因为 .
表示任意字符,*
表示前面的任意字符出现零次或者任意次,所以可以匹配到所有的文本行,因此再用 -c
选项统计匹配行数。
cat nowcoder.txt | grep ".*" -c
脚本五
使用 awk
命令编程来统计文件 nowcoder.txt
的总行数,其中 BEGIN
中声明一个计数器变量 count
用来记录总行数;而 中每遍历一行,则计数器变量
count
就加一;最后的 END
是当遍历完所有行及进行相关操作后就打印计数器变量 count
即总行数。
awk 'BEGINcount=0 count=count+1 ENDprint count' nowcoder.txt
脚本六
awk
中的 NR
是内置变量表示行号,awk 'print NR' nowcoder.txt
就会显示每行的行号,而 tail -n 1
表示获取最后一行的行号,即总行数。
awk 'print NR' nowcoder.txt | tail -n 1
脚本七
cat
命令使用 -n
选项也可以显示文件的行号,但同时也会打印该行的内容;使用 tail -n 1
获取最后一行的行号和内容;再用 awk
命令提取最后一行显示的行号。
cat -n nowcoder.txt | tail -n 1 | awk 'print $1'
脚本八
sed -n '$='
命令也可以显示文件的总行数。
sed -n '$=' nowcoder.txt
脚本九
nl
命令同 cat -n
一样,都可以显示文件的行号和内容。
nl nowcoder.txt | tail -n 1 | awk 'print $1'
注:但未通过该网站的测试用例。
脚本十
可以直接在 awk
命令的 END
中打印内置变量 NR
就会输出文件的总行数。
awk 'ENDprint NR' nowcoder.txt
以上是关于Linux脚本练习之script059-统计文件的行数的主要内容,如果未能解决你的问题,请参考以下文章
Linux脚本练习之script046-统计文件中仅包含数字的行。
Linux脚本练习之script038-统计一共有多少个普通用户。
Linux脚本练习之script084-nginx日志分析之统计爬虫抓取404的次数
Linux脚本练习之script091-统计VSZ,RSS各自总和