高中自然地理17个基本原理(高中自然地理17个基本原理知识点)
11372023-08-31
很多朋友对于键值数据库基本原理和key值不建议用下标不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
本文目录
答:本文邀请kitman来回答,理论结合实际为你献上奉上后台必备技能-awk入门教程~
首先说明,awk的数值只有双精度浮点型。awk是一种非常强大文本处理工具,可以相当于一个数据库来使用。
$digit代表第几个字段,字段之间的间隔默认是空格或者\t,多个连续的间隔算一个间隔,$0代表这一行
awk命令的基本格式awk'awk程序语句'输入文件1输入文件2…
awk程序语句的基本格式pattern1{action1}pattern2{action2}…
pattern是筛选的条件,支持||、&&、!这些条件组合
注:pattern可为空,即每一行,pattern还支持正则表达式,/正则内容/{action}
eg:
awk'$6!=0{print$0}'file1
即这一行的第六个字段不等于0,则打印这一行
awk的内置变量NR记录当前已经读取的行数(不是输出的行数)
FNR作用域是当前文件的NR
NF记录当前行的字段数
trick:当多个输入文件时,NR==FNR即这一行在第一个文件中,NR>FNR即这一行不在第一个文件中。
awk的内置特殊patternBEGIN:匹配第一个输入文件第一行之前的位置
END:最后一个输入文件最后一行之后的位置
awk的actionaction里面可以定运算,支持+-×/%五种运算。变量直接只用,不需要声明;
action中如果有多条语句,那么可以用;隔开
awk中只有两种类型:数值、字符串。可以变量可以使用字符串的拼接,使用空格隔开。
eg:
test.awk:
1234
23182
ab171
awk'$3>15{count=count+1}END{printcount}'test.awk
2
awk'$3>15{count=count+1;var=count"haha";printvar}'test.awk
1haha
2haha
awk'$3>15{count=count+1;var=count"_haha";printvar}'test.awk
1_haha
2_haha
即计算第三个字段大于15的行数,最后打印出来
awk的数组与控制语句awk支持数组,和使用一般的变量一样,不需要声明,直接a[下标]=value就可以了。这个下标可以是字符。
awk还支持一般编程语言中常见的控制结构if、while、for,和c中的写法一样。
if(){}else{}
while(){}
for(;;){}
eg:
逆序打印行,这里使用了printf,它的用法和c中的printf差不多,可以用于格式化的输出,默认不输出换行。
awk'{line[NR]=$0}END{i=NR;while(i>0){printfline[i]"\n";i=i-1}}'test.awk
ab171
23182
1234
awk的选项awk-F指定输入文件字段的分隔符
eg:
test2.awk:
1:234
2:3182
a:b171
awk-F":"'{print$2}'test2.awk
234
3182
b171
把:换成\t之后:
awk-F":"'{print$2}'test2.awk
空行
空行
空行
注:分隔符是空格时,\t也是分隔符;但指定\t是分隔符时,空格不是分隔符
awk的内置函数split(“被切割的字符串”,数组名,”分隔符”)
toupper()替换成大写
tolower()替换成小写
gsub()全局替换
length()计算字符串的长度
eg:
awk'{printlength($3)}'test.awk
1
2
2
大例子业务场景
收藏排行榜
从收藏存量记录、和取消收藏存量记录中,提取出收藏排行榜
存量记录中,$1是用户uin,$6是漫画id
思路:
1、把收藏存量记录中的$1_$6作为一个key,放进一个map,值是收藏时间
2、再从取消收藏记录中,取$1_$6,对比时间,然后删除(相当于合并状态),然后输出结果
3、把数据结果用map记录,计数,输出结果
4、把数据结果用sort逆序按数字大小排,然后把次数cut掉
对应的脚本语句:
awk'NR==FNR{a[$1"_"$6]=$7}NR>FNR{key=$1"_"$6;if((keyina)&&(a[key]<$7)){deletea[key]}}END{for(iina){printi}}'allcollect03allcancel03|awk-F"_"'{b[$2]=b[$2]+1;}END{for(iinb){printi"\t"b[i]}}'|sort-r-n-k2|cut-f'1'
1.在键值对的字符串数组中,Key代表的是键;
2.在索引数组中,key代表的是下标位置
键值数据库数据结构最早借鉴了一维数组的设计方法;键值数据库设计时放宽了对下标和值的限制,所以key具有唯一地址的作用,也用来存在唯一内容,对value值存储内容不限制,可以存储字符串、数字、视频、图片、音频等,但是key--value必须成对出现。且键下的内容必须具有唯一性,目的是为建立索引及数据查找提供方便,但任然起着唯一地址的作用。
只有数据存储结构和数据,数据得不到永久保存不能称为真正的数据库。于是通过各种键值数据库系统的各种存储策略,以一定时间周期把数据复制到本地硬盘、闪存盘,键值数据库就初步成型了。但是在大数据环境下单机的内存要受容量限制,那么引入分布式处理方式便成为键值数据库的必然选择也是其基本特征之一。
YMLkey值不能使用"_"下划线的,基本命名方式:名字:(空格)值
文章到此结束,如果本次分享的键值数据库基本原理和key值不建议用下标的问题解决了您的问题,那么我们由衷的感到高兴!