Linux 从文件的第二行获取行数

Linux 从文件的第二行获取行数,linux,bash,Linux,Bash,由于第一行是页眉,如何从文件的第二行获取文件的行数 wc -l filename 有没有办法在其中设置一些条件?使用tail命令: -n+2将从第2行开始打印文件您可以使用awk从第2行开始计数: awk 'NR>1{c++} END {print c}' file 或者只需在结束块中使用NR变量: 或者,使用BASH算术从wc输出中减去1: 或者,你可以减去2 echo $((`cat FILE | wc -l`-2)) 没有办法调整wc命令本身。您应该选择是处理命令的结果,还是使

由于第一行是页眉,如何从文件的第二行获取文件的行数

wc -l filename
有没有办法在其中设置一些条件?

使用tail命令:


-n+2将从第2行开始打印文件

您可以使用awk从第2行开始计数:

awk 'NR>1{c++} END {print c}' file
或者只需在结束块中使用NR变量:

或者,使用BASH算术从wc输出中减去1:


或者,你可以减去2

echo $((`cat FILE | wc -l`-2))

没有办法调整wc命令本身。您应该选择是处理命令的结果,还是使用其他工具

正如其他答案中所建议的,如果您正在运行Bash,一个好方法是将命令的结果放入一个类似$$command-1的算术表达式中

如果您正在搜索可移植解决方案,以下是Perl版本:

perl -e '1 while <>; print $. - 1' < file

变量$。保存自上次关闭文件句柄以来读取的行数。while循环读取文件中的所有行。

请尝试这一行。这会解决你的问题

 $ tail -n +2 filename | wc -l 

使用GNU sed删除第一行:

sed '1d' file | wc -l

我想这应该适用于任何sed,而不仅仅是GNU-sed。cat的无用用法
perl -e '1 while <>; print $. - 1' < file
 $ tail -n +2 filename | wc -l 
sed '1d' file | wc -l