Linux 下统计文件文本行数

四种方法

文件 test.txt 有 17 行

方法一 使用 awk

逐行输出行号, tail -n1 获取最后一行的行号, 即总行数

awk '{print NR}' 为每一行打印当前行号。tail -n1 提取最后一个行号作为行数输出

awk '{print NR}' test.txt | tail -n1
17

直接输出最后一行的行号 (文件总行数)

awkEND 块在文件结束时执行, 所以 NR 即为文件总行数

awk 'END{print NR}' test.txt
17

方法二 使用 grepawk

为文件每行添加行号, 然后用 awk 取出行号部分, 再通过 tail -n1 获取最后一个行号

grep -n '' 为文件的每一行标记行号。awk -F : '{print $1}' 取出行号部分, tail -n1 返回最后一个行号

grep -n '' test.txt | awk -F : '{print $1}' | tail -n1
17

获取最后一行的行号, 即文件总行数

grep -n '' 作用相同, awk -F : 'END{print $1}' 在处理完文件后取最后的行号

grep -n '' test.txt | awk -F : 'END{print $1}'
17

方法三 使用 sed

显示最后一行的行号 (文件总行数)

-n 抑制默认输出, $ 到最后一行, = 打印行号

sed -n '$=' test.txt
17

统计文件的行数, 等同于cat test.txt | wc -l

方法四 使用 wc

直接统计并显示文件行数

wc -l 输出文件行数及文件名

wc -l test.txt
17 test.txt

显示文件的行数, 不输出文件名

awk '{print $1}'wc -l 输出中提取行数部分

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

将文件内容通过管道传递给 wc -l, 显示行数

此命令和 wc -l test1.txt 类似, 但增加了 cat 调用

cat test.txt | wc -l
17

原文

linux下统计文本行数的各种方法(一)

最后更新于 2019-04-10
使用 Hugo 构建
主题 StackJimmy 设计