wc -l file.txt
输出线和文件名的数目。
我需要的只是自身号码(而不是文件名)。
我可以做这个
wc -l file.txt | awk '{print $1}'
但是,也许有更好的办法吗?
wc -l file.txt
输出线和文件名的数目。
我需要的只是自身号码(而不是文件名)。
我可以做这个
wc -l file.txt | awk '{print $1}'
但是,也许有更好的办法吗?
试试这个方法:
wc -l < file.txt
cat file.txt | wc -l
根据该男子页 (对于BSD版本,我没有GNU版本检查):
如果没有指定文件,标准输入被使用并且不显示文件名。 该提示将接受输入,直到在大多数环境中接收EOF,或[^ d]。
要做到这一点,而不领先的空间,为什么不:
wc -l < file.txt | bc
怎么样
wc -l file.txt | cut -d' ' -f1
即管的输出wc
成cut
(其中定界符是空间和只选择第一场)
怎么样
grep -ch "^" file.txt
我有一个类似的问题,试图获得一个字符计数,而所提供的前导空格wc
,这使我这个网页。 这里尝试的答案后,以下是从Mac上(BSD的Bash)我个人的测试结果。 再次,这是字符数; 线路算你会做wc -l
。 echo -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
是最简洁的,并且awk
和perl
似乎有点矫枉过正,但他们都应该是比较快和便携不够。
另外请注意,其中的一些可以适用于周围修剪一般从字符串的空白,以及(沿echo `echo $FOO`
,另一种巧妙的方法)。
显然,有很多这样的解决方案。 这里是另外一个,但:
wc -l somefile | tr -d "[:alpha:][:blank:][:punct:]"
这只能输出的行数,但尾部的换行符( \n
)存在,如果你不想,要么,更换[:blank:]
与[:space:]
。
最好的办法是首先的查找目录中的所有文件,然后使用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}'