我想只获取文件中的行数: 所以我这样做:
$wc -l countlines.py
9 countlines.py
我不想要文件名,所以我试过
$wc -l countlines.py | cut -d ' ' -f1
但这只是回显空行。
我只想要打印数字9
答案 0 :(得分:8)
使用stdin,您将不会遇到wc
打印文件名
wc -l < countlines.py
答案 1 :(得分:3)
答案 2 :(得分: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
e.g。在文件中找到空字符(每行都是如此)并计算出现的-c
。对于上述testfile
,它会返回正确的 2 。
此外,如果您想要计算非空行,您可以使用
进行计数grep -c '.' file
不要相信wc
:)
Ps:wc
最奇怪的用途之一是
grep 'pattern' file | wc -l
而不是
grep -c 'pattern' file
答案 3 :(得分:2)
答案 4 :(得分:2)
将文件名管道导入wc
会将其从输出中删除,然后tr
将空白区域移除:
wc -l <countlines.py |tr -d ' '
答案 5 :(得分:2)
作为替代方案,如果文件名是从stdin
输入的,则wc不会打印文件名$ cat countlines.py | wc -l
9
答案 6 :(得分:2)
另一种方式:
cnt=$(wc -l < countlines.py )
echo "total is $cnt "
答案 7 :(得分:1)
像这样使用awk:
wc -l countlines.py | awk {'print $1'}