视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
awk和sed整理后资料_MySQL
2020-11-09 17:47:36 责编:小采
文档

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

下载本文
显示全文
专题