1

我只想获取文件中的行数:所以我这样做:

$wc -l countlines.py 
   9 countlines.py

我不想要文件名,所以我尝试了

$wc -l countlines.py | cut -d ' ' -f1

但这只是回显空行。

我只想9打印数字

4

8 回答 8

8

wc使用标准输入,打印文件名不会有问题

wc -l < countlines.py
于 2014-01-15T00:00:49.070 回答
3

如果您的文件没有以\n(新行)结尾,wc -l则会给出错误的结果。尝试下一个模拟示例:

echo "line1"    >  testfile #correct line with a \n at the end
echo -n "line2" >> testfile #added another line - but without the \n

$ wc -l < testfile
       1

返回1。(wc计算文件中换行符 ( \n) 的数量。)

因此,要计算\n文件中的行数(而不是字符数),您应该使用

grep -c '' testfile

例如,在文件中查找空字符(每一行都是如此)并计算出现次数-c。对于上面testfile它返回正确的2

此外,如果您想计算非空行,您可以使用

grep -c '.' file

不要相信wc:)

ps:最奇怪的用法之一wc

grep 'pattern' file | wc -l

代替

grep -c 'pattern' file
于 2014-01-15T01:11:37.457 回答
3

您也可以awk用来计算行数。(参考

awk 'END { print NR }' countlines.py
  • 其中countlines.py是您要计算的文件
于 2014-01-15T00:29:55.810 回答
2

通过管道将文件名wc从输出中删除,然后tr删除空格:

wc -l <countlines.py |tr -d ' '
于 2014-01-14T23:59:45.963 回答
2

被前导空格弄糊涂了。

我会使用在这里打印1st 字段:

% wc -l countlines.py | awk '{ print $1 }'
于 2014-01-14T23:54:44.340 回答
2

作为替代方案,如果文件名是从标准输入通过管道输入的,则 wc 不会打印文件名

$ cat countlines.py | wc -l
9
于 2014-01-15T00:03:29.967 回答
2

另一种方式:

cnt=$(wc -l < countlines.py )
echo "total is $cnt "
于 2014-01-15T00:20:42.803 回答
1

像这样使用 awk:

wc -l countlines.py | awk {'print $1'}
于 2014-01-14T23:56:20.777 回答