wc -l file.txt
输出行数和文件名。
我只需要数字本身(而不是文件名)。
我可以这样做
wc -l file.txt | awk '{print $1}'
但也许有更好的办法?
wc -l file.txt
输出行数和文件名。
我只需要数字本身(而不是文件名)。
我可以这样做
wc -l file.txt | awk '{print $1}'
但也许有更好的办法?
当前回答
不调用外部命令而去掉前导零的另一种方法是使用算术展开$((exp))
echo $(($(wc -l < file.txt)))
其他回答
cat file.txt | wc -l
根据手册页(对于BSD版本,我没有GNU版本来检查):
如果没有指定文件,则使用标准输入,不使用文件 的名字是 显示出来。提示符将接受输入,直到接收到EOF或[^D] in 大多数环境。
最好的方法是首先找到目录中的所有文件,然后使用AWK NR(记录数量变量)
命令如下:
find <directory path> -type f | awk 'END{print NR}'
例如:- find /tmp/ -type f | awk 'END{print NR}'
显然,这个问题有很多解决方案。 下面是另一个例子:
wc - l somefile | tr - d”[:α][空白:][punct:]”
这只输出行数,但是后面的换行符(\n)是存在的,如果你也不想要,用[:space:]替换[:blank:]。
这适用于我使用正常的wc -l和sed剥离任何不是数字的字符。
wc -l big_file.log | sed -E "s/([a-z\-\_\.]|[[:space:]]*)//g"
# 9249133
如果不使用前导空格,为什么不这样做呢:
wc -l < file.txt | bc