热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

awk和sed整理后资料_MySQL

awk和sed整理后资料
sed及awk部分为本人学习笔记,呵呵,自己写的哦


sed命令:
格式:sed -e 's/aaa/bbb/g' -n -e '/XXX/p' -e '/YYY/d' filename

命令参数:
-e 执行多个SED命令
s替换
g全文
-n显示过滤后的部分,否则会重复显示一次原文
p显示出来print
d删除
/把元字符转化($,/.,/^,//)


正则表格式:
/^$/ 空行
/^.*/ 一整行
/*/ 一个或多个空格
/[a-zA-Z][a-zA-Z]*:W[a-zA-Z0-9][a-zA-Z0-9/.]*.*/ 有效的URL

例:
$cat tt
aaa XXX
aaa YYY
bbb XXX
bbb YYY
$sed -e 's/aaa/bbb/g' -n -e '/XXX/p' -e '/YYY/d' tt
bbb XXX
bbb XXX
hos08:/u1/hos08/tmp>
注解:把aaa替换成bbb,过滤包含XXX的行,删除包含YYY的行。


awk (一)

<小于
> 大于
<= 小于等于
>= 大于等于
== 等于
!= 不等于
value~/pattern/ 如果value匹配样式,为真
value!~/pattern/ 如果value不匹配样式,为真
&& A与B
|| A或B

使用 printf语句中参数可以使段落整齐。
$cat tt
aaa XXX 100 5
aaa YYY 98 9
bbb XXX 111 3
bbb YYY 99 8
过滤包含aaa的行并以,"TTT",格式显示出来
$awk ' /aaa/ {print ,"TTT",;} ' tt
XXX TTT aaa
YYY TTT aaa

过滤第三列为2位数字,并且第四列大于5的行
$awk ' ( ~ /[0-9][0-9]/ ) && ( > 5 ) { print ,,, ;}' tt
aaa YYY 98 9
bbb YYY 99 8
把所列行后边加*号
$awk ' ( ~ /[0-9][0-9]/ ) && ( > 5 ) { printf "%s/t%s/n" ,,"*";}' tt
aaa YYY 98 9 *
bbb YYY 99 8 *
把第一列替换成nnn并在结尾加TTT,再把第一列替换成uuu直接显示。
$awk ' = "nnn" { printf "%s/t%s/n" , , "TTT" ; } = "uuu" { print ; } ' tt
nnn XXX 100 5 TTT
uuu XXX 100 5
nnn YYY 98 9 TTT
uuu YYY 98 9
nnn XXX 111 3 TTT
uuu XXX 111 3
nnn YYY 99 8 TTT
uuu YYY 99 8
针对上一行加入了next,其功能是如果第一段命令为真则跳过以后段直接重新开始检查
$awk ' = "nnn" { printf "%s/t%s/n" , , "TTT" ;next; } = "uuu" { print ; } ' tt
nnn XXX 100 5 TTT
nnn YYY 98 9 TTT
nnn XXX 111 3 TTT
nnn YYY 99 8 TTT
把第三列大于等于100的行加TTT,再把第四列大于等于5的行连同上一查询结果一同列出来。
$awk ' >= 100 { printf "%s/t%s/n" ,,"TTT" ; } >= 5 { print ; } ' tt
aaa XXX 100 5 TTT
aaa XXX 100 5
aaa YYY 98 9
bbb XXX 111 3 TTT
bbb YYY 99 8
把第三列大于等于100的行加TTT,再把小于100的行连同上一查询一同列出来。
$awk ' >= 100 { printf "%s/t%s/n" ,,"TTT" ; } <100 { print ; } ' tt
aaa XXX 100 5 TTT
aaa YYY 98 9
bbb XXX 111 3 TTT
bbb YYY 99 8
搭配其他命令来使用。
$w
3:16pm up 4 days, 8:34, 30 users, load average: 0.97, 0.78, 0.80
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
usr0809 pts/1 172.26.4.52 2:31pm 23:52 0.54s 0.00s -bash
usr0809 pts/2 172.26.4.49 12:53pm 0.00s 10.68s 0.03s -bash
u0809 pts/3 172.26.4.56 7:39am 28:29 7.59s 0.01s -bash
u0809 pts/4 172.26.4.51 2:20pm 55:45 0.12s 0.02s -bash
过滤包含pts的行,并显示它的第三和第一列
$w |awk ' = /pts/ {printf "%s/t%s/n",,;}'
172.26.4.52 user1
172.26.4.49 user2
172.26.4.56 user3
172.26.4.51 user4

推荐阅读
author-avatar
Ymgif影像--阿雅XX_506
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有