首页 > 试题广场 >

统计文件的行数

[编程题]统计文件的行数
  • 热度指数:113902 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
编写一个shell脚本以输出一个文本文件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
示例1

输入

#include <iostream>
using namespace std;
int main()
{
    int a = 10;
    int b = 100;
    cout << "a + b:" << a + b << endl;
    return 0;
}

输出

9
grep -n "" nowcoder.txt|awk -F: '{print }'|tail -n1| awk -F: '{print $1}'
awk '{print NR}' nowcoder.txt|tail -n1
awk 'END{print NR}' nowcoder.txt
sed -n '$=' nowcoder.txt
cat nowcoder.txt |wc -l
以上5种方法均可


发表于 2020-10-30 15:29:35 回复(5)
wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。

该命令各选项含义如下:- c 统计字节数;- l 统计行数;- w 统计字数。

发表于 2021-01-27 10:28:31 回复(0)
我一直以为牛客网的域名是newcoder,写该题错了好多便,才看清原来是nowcoder
发表于 2021-05-28 22:30:13 回复(2)
  1. wc命令
cat nowcoder.txt | wc -l
wc -l < nowcoder.txt
wc -l nowcoder.txt | gawk '{print $1}'
  1. grep命令
grep -n "" nowcoder.txt | tail -n1 | gawk -F: '{print $1}'
  1. sed命令
sed -n '$=' nowcoder.txt
  1. gawk命令
gawk '{print NR}' nowcoder.txt | tail -n1
gawk 'END{print NR}' nowcoder.txt
发表于 2021-04-23 12:51:57 回复(4)
sed -n '$=' nowcoder.txt

首先我来解释一下这个sed这个命令各个参数的意思。
n 表示只显示在标准书输出中,不改变源文件
$ 符表示只输出末行的内容(如果不使用这个参数,会依次打印1,2,3,4 ..... 8)
= 表示统计行数

发表于 2022-05-30 09:37:51 回复(0)
#!/bin/bash
int=0
while read line
do
    let "int++"
done < nowcoder.txt
echo $int
发表于 2022-07-04 13:24:27 回复(0)
wc命令就是用来统计文件内容的,因此第一想法必然是使用wc命令。下面归纳一下wc命令的功能:
wc命令统计指定文件的字节数,字数,行数,并将统计结果显示出来。
命令基本格式:
wc [选项] [文件]...
 常见选项:
-c 统计字节数 
-l 统计行数
-w 统计字数 
因此直接使用 -l 选项即可:
#!/bin/bash
wc -l < nowcoder.txt
此外若使用wc命令没有文件参数,那么将从标准输入读取数据:
#!/bin/bash
cat nowcoder.txt|wc -l

简要了解了一下,AWK命令只能说,awkYYDS!! 
AWK解决代码如下:
#!/bin/bash
 awk 'BEGIN {lines=0;}{lines=lines+1;} END {printf("%d\n",lines)}' nowcoder.txt
 







 

编辑于 2021-06-10 16:36:58 回复(0)
汇总版

wc -l
wc -l nowcoder.txt | awk '{print $1}'

grep -c c* ./nowcoder.txt
grep -n "" nowcoder.txt|awk -F: '{print }'|tail -n1| awk -F: '{print $1}' 
# -F 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,
# -F相当于内置变量FS, 指定分割字符

awk '{a[$0]++}END{print length(a)}' nowcoder.txt
awk '{print NR}' nowcoder.txt|tail -n1
awk 'END{print NR}' nowcoder.txt

sed -n '$=' nowcoder.txt


发表于 2021-04-10 12:35:31 回复(0)
发表于 2023-02-17 15:21:51 回复(1)
grep -n "" nowcoder.txt|awk -F: '{print }'|tail -n1| awk -F: '{print $1}' awk '{print NR}' nowcoder.txt|tail -n1 awk 'END{print NR}' nowcoder.txt sed -n '$=' nowcoder.txt cat nowcoder.txt |wc -l
发表于 2023-03-16 17:06:36 回复(0)
wc -l $1
发表于 2023-01-11 14:38:33 回复(0)
#!/bin/bash
a=$(cat nowcoder.txt | wc -l)
echo "$a"
发表于 2022-01-18 14:46:27 回复(0)
wc指令可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。


发表于 2021-07-30 23:33:23 回复(2)
wc -l nowcoder.txt
发表于 2021-01-29 18:27:03 回复(0)
cat nowcoder.txt | wc -l
发表于 2020-12-04 22:55:40 回复(0)
wc -l < nowcoder.txt
发表于 2024-07-02 11:55:14 回复(0)
wc -l &lt; nowcoder.txt sed -n '$=' nowcoder.txt 
编辑于 2024-04-25 15:34:54 回复(0)
wc -l nowcoder.txt |cut -d' ' -f1
发表于 2023-12-11 09:34:19 回复(0)
num= cat nowcoder.txt |wc -l
echo $num
发表于 2023-11-20 15:30:46 回复(0)
1.wc -l nowcoder.txt | awk '{print $1}' 2.awk '{print NR}' nowcoder.txt | tail -n1
编辑于 2023-11-04 09:55:36 回复(0)