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立即一次性处理