Home  >  Article  >  Database  >  awk和sed整理后资料_MySQL

awk和sed整理后资料_MySQL

WBOY
WBOYOriginal
2016-06-01 13:54:041186browse

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" ; } 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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn