美文网首页
awk妙妙屋

awk妙妙屋

作者: yandaxin | 来源:发表于2020-10-25 18:54 被阅读0次

awk [options] 'condition{cmd};condition{cmd}' file (分号不必须)
awk 接受标准输入、管道、文件,逐行处理文本。

options 一览
option 功能
-F 指定分隔符,默认是tab或者空格; -F '\t\t' 指定为双tab
-v 设置变量,-v x=aa -v y=bb;awk -v x='hhh' '{print x}' file 不需使用$x取变量如果是x='hhh',需print "'$x'";
特殊常量一览(诸如FS此类常量,取值不需 $)
常量 含义
FS field slash 字段分隔符,默认是空格
OFS field slash 输出结果的字段分隔符,默认是空格
RS row slash 行分隔符,默认是换行符
ORS row slash 输出结果的行分隔符,默认是换行符
NF number of field 当前行中字段数
NR number of row 当前行号,和sed一样,从1开始
FNR 当前输入文档的当前行号,多个文档时有用
FILENAME 当前输入文档的名称
$0 当前行全部内容
$n 当前行中第n个字段
awk比较符
比较符号 功能
/aaa/ 全行数据正则匹配
!/aaa/ 全行数据正则匹配后取反
~/aaa/ 对特定数据正则匹配
!~/aaa/ 对特定数据正则匹配后取反
||、&& 、!=、 >、 <、 >=、<= 常规的含义
BEGIN & END

begin 是在读取所有行之前执行一次,end是在读完所有行后执行一次;
所有, 一般用BEGIN{cmd;cmd;...}来初始化 END{cmd;cmd;..}来汇总。

内置函数
函数声明 功能
getline; 读取下一行,执行后不影响其他命令执行,$0 NF等都置换为下一行的
next; 跳转下一行,与getline不同的是,会从头开始执行awk命令
sin(x) 求x的余弦值
cos(x) 求x的正弦值
tolower(str) 转换为小写字母
toupper(str) 转换为大写字母
split(str,arr[,sepr]) 将str根据sepr分割,存入到数组arr中,seperator默认是空格
gsub(regx,str[,t]) 将t中所有正则regx能匹配到的用str替换,t不写默认是$0
sub(regx,str[,t]) 将t中第一个正则regx能匹配到的用str替换,t不写默认是$0
substr(str,start,step) 截取字符串,从start起的step个字符
match(str,regx) 返回正则表达式在字符中的位置
index(str1,str2) 返回str2在str1中的位置
length(str) 返回str长度
rand() 返回一个0到1之间的随机数
srand(x) 设置随机种子
systemtime() 返回时间戳

system("cmd") 在awk中使用shell命令

实用命令
awk -v FS=":" '{print $1}' test.txt 重新定义字段分隔符为:
awk -v FS="[:,-,]" '{print $1}' test.txt 重新定义字段分隔符为:-
awk -v OFS=". " '{print NR,$0}' file 输出结果标上行号
awk '/hello/{print $0}' file 基础正则,匹配到行中包含hello的打印,{print $0}可省略

fsh all fwyymis ssh "cat /home/homework/log/zhibo-sql/zhibo_sql.log.slow.20201027*" | awk -F '[\]\[\?]' -v OFS=';' '{if(match($0,/URI/)==0){next}else{print $2,$7,$9,$(NF-1)}}' > slow.log.20201027

awk '{printf("%6.2f %s\n",\$2*\$3,$0)}' xxx.data | sort 按照第2列和第3列的乘积 排序输出

cat access.log.2019070517 | grep /assistantdesk/desk/student/performance | cut -d " " -f 4 | sort | uniq -c | sort -r |head -10 统计日志中第四个参数(例如ip)出现次数最多的前10名

head -1 access.log.2019070517 | awk -F ' ' '{for(i=1;i<=NF;i++){print $i}}' | cat -n 一条日志 行转列 并加行号

相关文章

  • awk妙妙屋

    awk [options] 'condition{cmd};condition{cmd}' file (分号不必须...

  • 蜘蛛妙妙屋

    今早街行,于某机关院铁栅栏前,见其上攀附的绿色植物中间,隐藏一座造型奇特之蜘蛛网。人多不注意,或以为败絮。我独觉其...

  • 奇幻妙妙屋

    生活中总是有很多的不便,比如有时会忘带水笔,带成铅笔,夏天,一进屋子就热的不行,闷闷的,冬天,一进屋子却...

  • 热爱生活的一万个理由

    文稿|十七 图片|十七 来源|wuli妙妙屋 生活是...

  • 米奇妙妙屋

    最近疯狂的喜欢上看动画片,米奇妙妙屋从第一季追到第一集,作为一个成人,我觉得看动画片对我来说是一件很愉悦的事情,我...

  • 米奇妙妙屋

    “M-I-C-K-E-Y——M-O-U-S-E——”我的童年有朵拉,但也少不了米奇。 《米奇妙妙屋》我也只看到了第...

  • 《奇妙》

    “老师,奇妙是哪个字啊?” “米奇妙妙屋的奇妙....” ..

  • 和鼠小弟一起学数学——《鞋子妙妙屋》

    《鞋子妙妙屋》这本讲的数学概念是:非标准计量单位。 阿宝和阿娃想把一只人类的鞋子搬进游戏室做妙妙屋,但是不知道游戏...

  • 家长课堂丨绘本里的哲学

    上周四,参加了奇思妙妙屋在哈宝举办的家长课堂。主题是研读绘本背后的哲学。 原来,奇思妙妙屋已经开办了四年。就像她的...

  • 睡前故事(日更凑数,慎入)

    “爸爸讲故事。” “好,给你讲个狼来了的故事。” “不要,我要听米奇妙妙屋的故事。” “好吧,米老鼠和唐老鸭在妙妙...

网友评论

      本文标题:awk妙妙屋

      本文链接:https://www.haomeiwen.com/subject/xaynmktx.html