资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
LINUX的awk和sed的常用用法 awk的用法a w k语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息调用awk有三种方式调用a w k,第一种是命令行方式,如: awk F : commands input-files 第二种方法是将所有a w k命令插入一个文件,并使a w k程序可执行,然后用a w k命令作为脚本的首行,以便通过键入脚本名称来调用它。第三种方式是将所有的a w k命令插入一个单独文件,然后调用:awk f awk-script-file input-filesawk脚本模式和动作在命令中调用a w k时,a w k脚本由各种操作和模式组成。模式包括两个特殊字段B E G I N和E N D。使用B E G I N语句设置计数和打印头。B E G I N语句使用在任何文本浏览动作之前。E N D语句用来在a w k完成文本浏览动作后打印输出文本总数和结尾状态标志。实际动作在大括号 内指明。域和记录$ 0,意即所有域 确保整个a w k命令用单引号括起来。 确保命令内所有引号成对出现。 确保用花括号括起动作语句,用圆括号括起条件语句。awk中的正则表达式+ 使用+匹配一个或多个字符。? 匹配模式出现频率。例如使用/X Y?Z/匹配X Y Z或Y Z。awk if($4/Brown/) print $0 tab2等效于awk $0 /Brown/ tab2内置变量awk print NF,NR,$0ENDprint FILENAME tab1NF 域的总数NR已经读取的记录数FILENAME awk if(NR0 & $2/JLNQ/) print $0ENDprint FILENAME tab1显示文件名echo /app/oracle/ora_dmp/lisx/tab1 | awk -F/ print $NF定义域名awk owner=$2;number=$3;if(owner/SYSADMIN/ & number!=12101)print $0ENDprint FILENAME tab1awk BEGINNUM1=7if($1=NUM1) print $0ENDprint FILENAME tab1当在a w k中修改任何域时,重要的一点是要记住实际输入文件是不可修改的,修改的只是保存在缓存里的a w k复本awk BEGINNUM1=7if($1=NUM1) print $1+2,$2,$3+100ENDprint FILENAME tab1只打印修改部分:用awk BEGINNUM1=7if($1=NUM1)$2=ORACLE; print $0ENDprint filename:FILENAME tab1可以创建新的域awk BEGINNUM1=7;print COL1tCOL2tCOL3tCOL4if($1=NUM1)$4=$1*$3;$2=ORACLE; print $0ENDprint filename:FILENAME tab1打印总数:awk BEGINNUM1=7;print COL1tCOL2tCOL3tCOL4if($1=NUM1)tot+=$3;$4=$1*$3;$2=ORACLE; print $0ENDprint filename:FILENAME total col3: tot tab1使用此模式打印文件名及其长度,然后将各长度相加放入变量t o t中。ls -l | awk /d/ print$9t$5 tot+=$5ENDprint total KB: tot内置字符串函数gsub字符要用引号,数字不用awk gsub(/12101/,hello) print $0 ENDprint FILENAME tab1awk gsub(/12101/,3333) print $0 ENDprint FILENAME tab1indexawk print index($2,D)t;print $0 tab1awk print index($2,D)t $0 tab1lengthawk print length($2)t $0 tab1maawk print match($2,M)t $0 tab1splitawk print split($2,new_array,_)t $0 tab1sub 替换成功返回1,失败返回0awk print sub(/SYS/,oracle,$2)t $0 tab1substrawk print substr($2,1,3)t $0 tab1从s h e l l中向a w k传入字符串echo Stand-by | awk print length($0)t$0 8 Stand-byfile1=tab1cat $file1 | awk print sub(/ADMIN/,sss,$2)t$0字符串屏蔽序列 b 退格键 t t a b键 f 走纸换页 d d d 八进制值 n 新行 c 任意其他特殊字符,例如 为反斜线符号 r 回车键awk printf修饰符- 左对齐Wi d t h 域的步长,用0表示0步长. p r e c 最大字符串长度,或小数点右边的位数如果用格式修饰输出,要指明具体的域,程序不会自动去分辨awk printf %-2d %-10s %dn, $1,$2,$3 tab1输出结果9SYSADMIN 121019SYSADMIN 1210114 SYSADMIN 1210100000120029SYSADMIN 121012JLNQ 121012JLNQ 121017SYSADMIN 121017SYSADMIN 121016ac_ds_e_rr_mr 13333向一行a w k命令传值awk BEGINSYS=SYSADMINif($2=SYS) printf %-2d %-10s %dn, $1,$2,$3 tab1在动作后面传入awk if($2=SYS) printf %-2d %-10s %dn, $1,$2,$3 SYS=SYSADMIN tab1awk脚本文件SED用法sed怎样读取数据s e d从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后读命令行或脚本的第一条命令,并使用这些命令查找模式或定位行号编辑它。重复此过程直到命令结束。调用s e d有三种方式使用s e d命令行格式为:sed 选项 s e d命令 输入文件。记住在命令行使用s e d命令时,实际命令要加单引号。s e d也允许加双引号。使用s e d脚本文件,格式为:sed 选项 -f sed脚本文件 输入文件要使用第一行具有s e d命令解释器的s e d脚本文件,其格式为:s e d脚本文件选项 输入文件使用s e d在文件中定位文本的方式x x为一行号,如1x , y 表示行号范围从x到y,如2,5表示从第2行到第5行/ p a t t e r n / 查询包含模式的行。例如/ d i s k /或/a-z/ p a t t e r n / p a t t e r n / 查询包含两个模式的行。例如/ d i s k / d i s k s /p a t t e r n / , x 在给定行号上查询包含模式的行。如/ r i b b o n / , 3x , / p a t t e r n / 通过行号和模式查询匹配行。3 , / v d u /x , y ! 查询不包含指定行号x和y的行。1 , 2 !sed编辑命令p 打印匹配行= 显示文件行号a 在定位行号后附加新文本信息i 在定位行号后插入新文本信息d 删除定位行c 用新文本替换定位文本s 使用替换模式替换相应模式r 从另一个文件中读文本w 写文本到一个文件q 第一个模式匹配完成后推出或立即推出l 显示与八进制A S C I I代码等价的控制字符 在定位行执行的命令组n 从另一个文件中读文本下一行,并附加在下一行g 将模式2粘贴到/pattern n/y 传送字符n 延续到下一输入行;允许跨行的模式匹配语句sed编程举例打印单行 sed -n 2p quo*打印范围 sed -n 1,3p quote.txt打印有此模式的行 sed -n /disco/p quote.txt使用模式和行号进行查询 sed -n 4,/The/p quote.txt sed -n 1,/The/p quote.txt 会打印所有记录?用.*代表任意字符 sed -n /.*ing/p quote.txt打印行号 sed -e /music/= quote.txt或sed -e /music/= quote.txt如果只打印行号及匹配行,必须使用两个s e d命令,并使用e选项。第一个命令打印模式匹配行,第二个使用=选项打印行号,格式为sed -n -e /pattern/p -e /pattern/=。sed -n -e /music/p -e /music/= quote.txt先打印行号,再打印匹配行 sed -n -e /music/= -e /music/p quote.txt替换sed s/The/Wow!/ quote.txt保存到文件sed 1,2 w filedt quote.txt读取文件,在第一行后面读取sed 1 r sedex.txt quote.txt替换字符系列如果变量x含有下列字符串:x=Department+payroll%Building G要实现以下转换:+ to of % to located语句: echo $x | sed s/+/ of /g | sed s/%/ located /g
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号