awk经典10种用法 有awk入门教程吗?
有awk入门教程吗?答:本文请贴kitman来能回答,理论结合实际为你的献上奉上后台必备技能-awk入门教程~简单的方法那就证明,awk的数值只有一双精度浮点型。awk是一种相当强横文本处理工具,可以
有awk入门教程吗?
答:本文请贴kitman来能回答,理论结合实际为你的献上奉上后台必备技能-awk入门教程~
简单的方法那就证明,awk的数值只有一双精度浮点型。awk是一种相当强横文本处理工具,可以普通一个数据库来建议使用。
$digit代表第几个字段,字段之间的间隔默认是空格或是t,多个发动的间隔算一个间隔,$0贞洁戒这一行
awk命令的基本上格式awkawk程序语句输入文件1输入文件2…
awk程序语句的基本上格式pattern1 {action1} pattern2 {action2}…
pattern是删选的条件,支持||、ampamp、!这些条件组合
注:pattern可为空,即每一行,pattern还接受正则表达式,/正则内容/{action}
eg:
awk$6!0{print$0}file1
即这一行的第六个字段不等于零0,则再打印这一行
awk的内置变量NR记录当前早就读取数据的行数(并非输出的行数)
FNR作用域是当前文件的NR F记录当前行的字段数
trick:当多个再输入文件时,NRFNR即这一行在第一个文件中,NRgtFNR即这一行还在另一个文件中。
awk的内置特殊能量patternBEGIN:版本问题那个然后输入文件第一行之前的位置
END:那个输入输入文件之后一行之后的位置
awk的actionaction里面可以不定运算,接受-×/%五种运算结果。变量直接只用,不需要声明;
action中假如有多条语句,那么也可以用隔开
awk中只有四种类型:数值、字符串。也可以变量这个可以不使用字符串的拼接,建议使用空格包围起来。
eg:
1234
23182
a b 17 1awk $3 gt 15 {countcount 1} END{printcount}
2
awk$3a815{countcount1varcounthahaprintvar}
1haha
2hehe
awk$3a815{countcount1varcount_hahaprintvar}
1_yeah
2_yeah
即换算第三个字段大于015的行数,到最后再打印进去
awk的数组与控制语句awk支持数组,和使用好象的变量一样的,不是需要声明,就a[下标]value就可以了。这个下标也可以是字符。
awk还接受好象编程语言中较常见的控制结构if、while、for,和c中的写法一样的。
if(){}exists{}
while(){}
for(){}
eg:
逆序再打印行,这里在用了printf,它的用法和c中的printf不多,可以作用于重新格式化的输出,设置为不输出来换行。
awk{line[NR]$0}END{iNRwhile(igt0){printfline[i]
ii-1}}
ab171
23182
1234
awk的选项awk-F指定你输入文件字段的分隔符
eg:
1:234
2:3182
a:b171
awk-F:{print$2}
234
3182
b171
把:该成t之后:
awk-F:{print$2}
空行
空行
空行
注:分隔符是空格时,t又是分隔符;但指定你t是分隔符时,空格并非分隔符
awk的内置函数split(“被快速切割的字符串”,数组名,”分隔符”)
toupper()替换成英文字母
tolower()替换后成小写
gsub()全局替换
length()算出字符串的长度
eg:
awk{printlength($3)}
1
2
2
大例子业务场景
收藏排行榜
从收藏存量资料记录、和能取消收藏存量记录中,分离提取出收藏排行榜
存量记录中,$1是用户uin,$6是漫画id
思路:
1、把收藏存量记录中的$1_$6以及一个key,放进一个map,值是收藏时间
2、再从可以取消收藏记录中,取$1_$6,差别时间,然后删除掉(普通合并状态),接着输出低结果
3、把数据结果用map记录信息,计数,输出结果
4、把数据结果用sort逆序按数字大小排,然后把把次数squeeze掉
对应的脚本语句:
awk NRFNR{a[$1_$6]$7} NRgtFNR{key$1_$6if((keyacrossa)ampamp(a[key]lt$7)){deletea[key]}}END{for(iina){printi}}allcollect03 allcancel03 | awk -F_ {b[$2]b[$2] 1} END{for(iinb){printitb[i]}}|sort-r-n-k2|shoot-f1
Linux下如何统计代码行数?
学习linux时的笔记客气
Ls---list会显示当前目录列表-a(more会显示所有文件有.它表示隐藏)-l-h没显示具体一点文件
Cd---changdirectorycd目录(cd~可以表示回家了目录cd.它表示当前目录..会回上一级目录cd-在最近两次工作目录切换)
pwd---printworkdirectory
touch---创建家族文件
mkdir---makesdirectory(-p修改递归目录或者:mkdir–p1/2/3/4)
rm---restore(-r删出目录–f噬灵鬼斩删除文件)
clear---定期清理终端
tree---列一树状
cp---文件复制原文件(空格)目标文件-i(复制文件给提示)-r文件夹
mv---run原文件(空格)目标文件-i(复制文件给提示)
cat---concatenate全部没显示–b输出行号–n输出全部行号
more---打开系统内容分屏显示q逃离
grep---搜索文本内容(-n行数–v不包含的行–i忽略大小写字母^行首模式直接输入$行尾模式中搜索)
echo---重定向(a8作为输出到文件uzibala追加内容或者:ls-lhgta输出内容到文件aechohellopythondodoqua加分内容到a)
shutdown---关机后(-r重新启动-c能取消的或:shutdown2:05在这个时间关机后shutdown10在十分钟后关机后)
ifconfig---查找ip地址加强|例如ifconfig|grepinet
pingip(web默认端口80ssh系统默认端口22)
ssh【-pport】(ip地址)
scp–Pport本地文件user2remorte:目标文件
scp–Pportuser2remorte:目标文件本地文件(-r目录)
gedit---可以打开文件终端中再打开文件必须重新指定.当前目录下./文件
chmod---变动权限(/-rwx读写负责执行)语法:chmod参数目录第79集初级用法
chgrp–R组名文件是需要超级用户
chowm修改文件拥有者chown用户名文件名/目录名
sudo---暂时没有超级用户
groupassign/del增减组在~下想执行需要超级用户
cat/etc/group查看组
useradd/del-m(同时建立家目录)–g组名
passwd
id用户---栏里点信息
who/whoai打开系统用户
user
cat/etc/group(/etc/group)查找组/用户
usermod---如何修改用户组user–g(主组)-G(只附加组)组用户名
usermod–s/bin/bash用户可以修改用户名直接登陆第75集
which---查找文件夹目录/下命令目录
(bin里面存贮可先执行二进制文件sbin中s表系统/usr/bin后期直接安装的软件/user/sbin管理模块文件)
su---直接切换用户su用户名su–进入到root(-它表示进入到目录)
Tab键语法着色
通配符
*可以表示0~n个字符
?意思是1个字符
[]表示可以不看操作的字符组([a-z]可以表示a到z的所用字符)
|管道的或:ls|grepals输出的内容用grep立即一次性处理