Linux终端:查找长于x的行数

时间:2014-11-19 20:08:25

标签: linux bash awk terminal

我带着一个让我难过的问题来找你。我试图找到文件中的行数(在这种情况下,某个站点的html)长于x(在本例中为80)。

例如:google.com(通过wc -l检查)有7行,其中两行超过80行(使用awk' {print NF}'进行检查)。我试图找到一种方法来检查多少行超过80,然后输出该数字。

到目前为止,我的命令如下所示: wget -qO - google.com | awk '{print NF}' | sort -g

我在考虑只计算哪些行的值大于80,但我无法弄清楚它的语法。也许' awk'?也许我会以最笨拙的方式解决这个问题,并且出于某种原因撞墙。

感谢您的帮助!

编辑:测量单位是字符。该命令应该能够找到其中包含超过80个字符的行数。

3 个答案:

答案 0 :(得分:3)

如果你想要超过80个字符的行数(你的问题是缺少单位),grep是一个很好的候选人:

grep -c '.\{80\}'

所以:

wget -qO - google.com | grep -c '.\{80\}'

输出6。

答案 1 :(得分:2)

使用awk:

wget -qO - google.com | awk 'NF>80{count++} END{print count}'

这给出2作为输出,因为有两行超过80个字段。

如果你的意思是字符数(根据你在问题中的内容推测字段),那么:

wget -qO - google.com | awk 'length($0)>80{c++} END{print c}'

给出了6

答案 2 :(得分:2)

Blue Moon's answer(在其原始版本中)将打印字段数,而不是行的长度。由于awk中的默认字段分隔符为' '(空格),因此您将获得字数,而不是行的长度。

试试这个:

wget -q0 - google.com | awk '{ if (length($0) > 80) count++; } END{print count}'