如何获得“WC -l”印刷线条的只是数量没有文件名?如何获得“WC -l”印刷线条的只是数量没有文件

2019-05-13 14:51发布

wc -l file.txt

输出线和文件名的数目。

我需要的只是自身号码(而不是文件名)。

我可以做这个

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

但是,也许有更好的办法吗?

Answer 1:

试试这个方法:

wc -l < file.txt


Answer 2:

cat file.txt | wc -l

根据该男子页 (对于BSD版本,我没有GNU版本检查):

如果没有指定文件,标准输入被使用并且不显示文件名。 该提示将接受输入,直到在大多数环境中接收EOF,或[^ d]。



Answer 3:

要做到这一点,而不领先的空间,为什么不:

wc -l < file.txt | bc


Answer 4:

怎么样

wc -l file.txt | cut -d' ' -f1

即管的输出wccut (其中定界符是空间和只选择第一场)



Answer 5:

怎么样

grep -ch "^" file.txt


Answer 6:

技术对比

我有一个类似的问题,试图获得一个字符计数,而所提供的前导空格wc ,这使我这个网页。 这里尝试的答案后,以下是从Mac上(BSD的Bash)我个人的测试结果。 再次,这是字符数; 线路算你会做wc -lecho -n省略了尾随换行符。

FOO="bar"
echo -n "$FOO" | wc -c                          # "       3"    (x)
echo -n "$FOO" | wc -c | bc                     # "3"           (√)
echo -n "$FOO" | wc -c | tr -d ' '              # "3"           (√)
echo -n "$FOO" | wc -c | awk '{print $1}'       # "3"           (√)
echo -n "$FOO" | wc -c | cut -d ' ' -f1         # "" for -f < 8 (x)
echo -n "$FOO" | wc -c | cut -d ' ' -f8         # "3"           (√)
echo -n "$FOO" | wc -c | perl -pe 's/^\s+//'    # "3"           (√)
echo -n "$FOO" | wc -c | grep -ch '^'           # "1"           (x)
echo $( printf '%s' "$FOO" | wc -c )            # "3"           (√)

我不会依靠cut -f* ,因为它需要你知道,任何给定的输出可以有前导空格的确切数目一般方法。 和grep一个工程计算系,但没有文字。

bc是最简洁的,并且awkperl似乎有点矫枉过正,但他们都应该是比较快和便携不够。

另外请注意,其中的一些可以适用于周围修剪一般从字符串的空白,以及(沿echo `echo $FOO` ,另一种巧妙的方法)。



Answer 7:

显然,有很多这样的解决方案。 这里是另外一个,但:

wc -l somefile | tr -d "[:alpha:][:blank:][:punct:]"

这只能输出的行数,但尾部的换行符( \n )存在,如果你不想,要么,更换[:blank:][:space:]



Answer 8:

最好的办法是首先的查找目录中的所有文件,然后使用AWK NR(记录变量的数量)

下面是命令:

find <directory path>  -type f | awk  'END{print NR}'

例如: - find /tmp/ -type f | awk 'END{print NR}' find /tmp/ -type f | awk 'END{print NR}'



文章来源: How to get “wc -l” to print just the number of lines without file name?
标签: shell wc