b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

初学者awk数组遇到几个常见问题

电脑杂谈  发布时间:2020-04-11 14:11:33  来源:网络整理

vba 数组下标越界_asp 数组下标_awk数组下标

处理以下文件内容,取出域名,并根据域名进行计数和排序: (百度和搜狐面试题)

请参考答案的详细说明:

文件内容:

http://www.etiantian.org/index.html
http://www.etiantian.org/1.html
http://post.etiantian.org/index.html
http://mp3.etiantian.org/index.html
http://www.etiantian.org/3.html

请求结果:

mp3.etiantian.org 1
post.etiantian.org 2
www.etiantian.org 3

答案:

awk-F“ / +”'{酒店[$ 2] ++} END {用于(polinhotel)printpolawk数组下标,酒店[pol]}'url.txt | sort-rnk2

让我们看看这个问题.

awk数组下标_asp 数组下标_vba 数组下标越界

首先明确我们的目标,我们想要什么结果?

在这里,我们简化了问题,简化了对www.mp3.post进行计数并重复多次的目标,读者可以自行进行调整,并对mp3.etiantian.org,post.etiantian.org域名进行计数

如果出现www,则使用a记录www的重复次数awk数组下标,如果出现mp3,则使用b记录mp3的重复次数,如果显示post,则通过c记录post的重复次数.

答案如下:

[root@oldboy32-vm1files]#awk -F "[/]+"'$2~/www/{a++}$2~/mp3/{b++}$2~/post/{c++}END{print"www:"a,"mp3:"b,"post:"c}' url.txt

演示过程:

 [root@showawkfile]#  awk -F "[/]+"'$2~/www/{a++}$2~/mp3/{b++}$2~/post/{c++}END{print"www:"a,"mp3:"b,"post:"c}' url.txt
www:3 mp3:1 post:2

尽管这很容易理解,因为只有三个域名www,post和mp3,所以在一般的工作中会有很多域名,您会发疯的.

所以我们需要一种方法(一个名称)可以容纳这三种情况而不会互相影响.

vba 数组下标越界_asp 数组下标_awk数组下标

这就是我们正在讨论的数组(酒店),这三种情况是我们正在讨论的数组(酒店房间)中的元素.

这与以前的想法相同,分为三种情况,这次将不同的情况放入了酒店的三个房间.

[root@show awkfile]#awk -F "[/]+" '$2~/www/{h["www"]++}$2~/mp3/{h["mp3"]++}$2~/post/{h["post"]++}END{printh["www"],h["mp3"],h["post"]}' url.txt
3 1 2

提示: 如果您为awk数组指定房间名称(数组元素名称),请记住添加双引号. 否则,awk会认为这是一个变量.

[root@show awkfile]#awk 'BEGIN{h[www]=1;h[bbs]=2;print h[www],h[bbs]}'
2 2
[root@show awkfile]#awk 'BEGIN{h["www"]=1;h["bbs"]=2;printh["www"],h["bbs"]}'
1 2

上面的示例是没有双引号的awk会将其视为变量.

如果仍然很麻烦怎么解决?

遇到相同的内容时,是否可以进入同一房间?

如果遇到www,请自动进入www房间

vba 数组下标越界_awk数组下标_asp 数组下标

如果遇到MP3,您将自动进入MP3房间

如果遇到帖子,您将自动进入帖子室

是的,想想我们如何获取www或mp3或通过awk发布信息?

它们都是第二栏! Awk可以用$ 2表示.

因此,该数组可以写为.

h [$ 2] ++就足够了,该数字会自动就位,在就座后该数字会自动添加(自动加1).

[root@show awkfile]#awk -F "[/.]+" '{h[$2]++;print h["www"]}' url.txt
1
2
2
2
3
3
[root@show awkfile]#awk -F "[/.]+" '{h[$2]++;print"www:"h["www"],"mp3:"h["mp3"],"post:"h["post"]}'url.txt
www:1 mp3: post:
www:2 mp3: post:
www:2 mp3: post:1
www:2 mp3:1 post:1
www:3 mp3:1 post:1
www:3 mp3:1 post:2
这样虽然可以看到我们想要的结果,但是也显示出了执行过程,我们只想要结果呀!

只要最终结果可以通过END模式解决即可.

[root@show awkfile]#awk -F "[/.]+" '{h[$2]++}END{print"www:"h["www"],"mp3:"h["mp3"],"post:"h["post"]}'url.txt
www:3 mp3:1 post:2

asp 数组下标_vba 数组下标越界_awk数组下标

这是一个房间一个房间来显示内容,或者当房间很多时显示该句子,您又疯了.

awk自然有一个解决此问题的方法,即专用循环.

[root@show awkfile]#awk -F "[/.]+" '{h[$2]++}END{for(pol in h)print pol,h[pol]}' url.txt
www 3
mp3 1
post 2

他可以执行更复杂的计算,当然,他可以完成我们最常用的统计信息(重复数据删除).

如果您不使用2美元作为房号,我们需要手动指定房间,这将是一场噩梦.

$ 2只能代表www,mp3,post. 当然,它也涉及到先前的知识,选择合适的刀,然后剪出想要的东西.

wKiom1j9piqyAjPYAAKAbD6GgNs208.png

用于统计计数​​(重复数据删除)的awk数组

用于累积(计算总和)的awk数组


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-171844-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 米丽加尔恒
        米丽加尔恒

        有利益就有冲突

      热点图片
      拼命载入中...