版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.3
第三章UNIXsed(StreamerEditor)称为字符流编辑程序,是一个非交互式的文本编辑程序,作者为LeeE.McMahon(李•麦克马洪)。
'命令 [输入文件 或 - 命令文件[输入文件按照命令(方式1)或者命令文件中令(方式2)在输入文件中寻找并处理匹配行。不匹输入文件缺省时为stdin。输出为stdoutsed命令命令[pattern][!]如果缺省pattern,表示对所有行执行function。cmd表示命令的辅助功能。 addr1addr1 缺省 所有d命 s命 替换操 w 【例3-3.1】sed命令示例(以a.txt为输入文件sedThe/d sed0-9]/d seda-z]/!d sed1,10d 删除第1行到第10sed5,$d 输出第1行到第4行(不删除sed'/^#/,$d' 删除从第1个 注释行到最后一 删除含/*的行(C语言注释行sed^$/d sed'/^#/s/Q/DFF/g'a.txt sed‘s/$/\\/’a.txt 在每个行尾都加上反斜杠\seds/^t seds/if□[/if□(/g 例如,执行命令“ls*.a”,显示当前命令下的文件为: 这样的操作属于手动执行s命令。利用sed命令,编写s程序(文件),可以编写s文件cha2b_1,内容为: for□i□in□`cata.tmp` $
lsls例如为list,则cha2b_2为:$sedlssedls
ls□*.a□|\sed□'s/\.a$//'□| > 其中,“.*”表示一行中的所有文字,替换结果中的“&”是无名宏。执行命令为$ $ ls
lsls
mvabc.aabc.bmvde.ade.bmvzxy.azxy.b mvabc.aabc.bmvde.ade.bmvzxy.azxy.b
#0.stdin:Standardfilein#file22.stderr:Standardfileerr#file31.stdout:Standardfile
##file2#file3⊙方案1(用两行sed命令,产生临时文件$sed's/std.*file/standard/'<in3>$sed's/^\([0-2]\)\./\1\1\1:/'<a.tmp>⊙方案2(采用流水线,不产生临时文件$sed's/std.*file/standard/'<in3|>sed's/^\([0-2]\)\./\1\1\1:/'>⊙方案3(采用sed命令文件$sed-fs3<in3>【例3-3.4】使用sed编程,将电路描述文件转换为电路网表文件。定义电路描述文件或者电路网表文件都可以描述电路图。例如,电路描述文件circuit网表文件net描述了全部用节点号来描述的电路图。
定义仅含电阻的电路描述文件的BNF范式为<电路描述文件语句|电路描述文件语句<语句节点定义|电阻连接信息<节点定义节点名节点号<电阻连接信息电阻名结点结点<节点名字符|节点名字符<结点节点名|节点号<电阻名R字符|电阻名字符<节点号数字|节点号数字<字符数字|字母述文件分解成节点定义文件和电阻连接文件。可执行以下sed命令实现文件的分解:$sed'/=/!d'<电路描述文件>节点定义文$sed'/=/d'<电路描述文件>电阻连接文
生sed命令文件步骤文步骤生成步骤1:分解电路描述$sed'/=/!d'<circuit>$sed'/=/d'<circuit>$seds/^/s/d0| 行首加seds/□=□/\/| >sed's/$//'>s0 以期获得sed命令文件s0的内容为:执行sed命令为:$sed□-f□s0□<n0□>sed'/=/!d'<$1 >$4sed'/=/d'< >seds/^/s/$4| 行首加seds/□=□/\/| >sed's/$/\//'>$3 <$5 >$2 $ 步骤文信步骤 步骤生成执行sed命令如下:$sed'/=/!d | >sed's/\(.*\)□=□\(.*\)/s\/\1\/\2\ $sed'/=/d | >sed□-f□s0□>产生,并且将所有的sed命令在一个s文件中实现,取名为n2c_2,文件如下:sedd$1 sed's/\(.*\)□=□\(.*\)/s\/\1\/\2\//'>sed'/=/d'<$1|\ $3>$2 $ 3.4awk(APatternScanningandProcessLanguage)称为字符扫描和处理语言。由贝尔实验室的AlfredV.Aho,PeterJ.Weinberger和BrianW.Kernighan三人发明并命名。第2第1第2第1
'awk程序'[输入文件 或 - awk程序文件[输入用awk程序对输入文件逐行进行扫描并且处理。输入文件缺省时为stdin。输出为stdout。<TAB>RS:文件中记录的分隔符(recordseparator)。缺省值为换行符。FS:文件中字符段的分隔符(fieldseparator)。缺省值为空白符。NR:每一个记录的序号(numberofrecord)。如果以行作为记录,则文件最后NF:每个记录中字符段的数目(numberoffield)。记录中的各个字符段依次用变量$1,$2,…表示。$0表示整个记录。字符段变量的可以用数字型表达式表示,例如当i和n都是已知的数字时,可以使用$(i+1),$(i-n)awk提供各种运算操作,包括算术运算、关系运算和逻辑运算等。awk运算符与C语<=、==和!=。逻辑运算符有&&、||和!。赋值运算符有=、+=,-=、*=、/=和%=【例3.4-1】awk简单程序, '$1 'NR100NR pattern pattern1[,配行。pattern1和pattern2可以表达为以下几种匹配模式。var~stringvar!~/string/ 表示匹配字符串x或者匹配字符串y。 表示对字符x的一次或多次重复。 表示对字符x的零次或多次重复。【例3.4-2】字符串匹配模$1~ $1 /start 【例3.4-3】组合模式示例。$2$1 NR%20&&$1~ NR%20&&$1 ◉◉BEGIN{ 例如,打印文件中字符段的总数,awk程序为;wordsNF END{print□words由于初始时words的值为0,因而最后将打印出文件中的字符段总数第2第1print□[expr,…]printf□format,[expr,printexpr,各参量之间自动加空格,并且自printfCprintfexprformat中用百分号%引起的格式说明符表示,例如%d表示打印整数,%s表示打印字符串等等。format是引号括起的字符串。{printf□”%d\t”,NR;NR%10==1&&NF>= var={x5 ysmith x34 $3$1$2 print□length next和exit。if(expr)elsefor(expr1;expr2;expr3)while(expr)束对文件中当前行的操作,再执行第1行awk命令,处理文件中的下一行。C语例如:{if($3> $3=“toobig”;表示当$3大于1000时,将$3改为字符串“toobig”,然后打印。例如:{if($3>1000) {$3=“toobig”;print}}{i=NF;while(i>=1){print$i;i--awkBEGIN{print “%d\t”,NR;printEND{print“Totallines:”, <in4输入文件in4
$ 由END【例3.4-5】awk程序示例:文件排版整理。 20 2013要awk{fori=1i<=NFiprintf%s\t printfn $ {for(i=1;i<=NF;i++)printf“%s\t”,$i;printf在 $awk-f 在 $awk{for(i=1;i<=NF;i++)printf“%s\t”, printf“\n”}'含awk程序的文件awk6:awk‘$1!=prev{print;prev=$1}$ 假定in6的内容aaabcaadefccccawk6
aaabccc行测试$11aa空aa2aaaa(不变34cccc5cccc(不变awk$1==prev{printf“\t%s”,$1!= {printf“\n%s\t%s”,$1, prev=$1}awk7:$ 假定仍以in6为输入aaabcaadefcccc【例3.4-8】修改例3.4-7
aaabcdef⊕cc123 现的空行,并且在最后一行产生换行。编写s程序awk8为:sort|\awk‘$1== {printf“\t%s”,$1!= {printf“\n%s\t%s”,$1, ENDprintfn| awkNR $ 假定in8的内容aaabcaadefcccc
aaabcdef⊕cc123 <文件行|文件行<行学号成绩表<成绩表成绩|成绩表成绩<成绩课程学分数分数<文件行|文件行 math47eng3 eng36sw2 math48sw2 awk{score=0;point=for(i=3;i<NF;i+=2){s=$i;score+=s;i++;point+=s*$i;}sc=point/score/2;printf“%s\t%4.2f\n”,$1,sc}’$awk9输入【例3.4-10】可以用sed或者awk实现相同功能的程序示例sed awk'NFsed awk'NRsed awk'NRsed's/$/\\ awk'{print$0,sed's/^/ awk'{print'\t',sed's/\(.*\)□=□\(.*\)/s\/\1\/\2d0>s0可用以下awk命令实现相同的功能:awk'{pintf“s/%s/%s/\n”,$1,$3}'<d0假定输入文件in11为awkNR%3==0
NR%30printfd,□ END{if(NR%3!=0)printf“\n”}’|sed‘s/,□$//’ 【例3.4-12】空格整理程序要求编写一个s程序,统计输入的英文文本文件中一共有多少句子和段落。只考虑以.(dot)dot只出现在句子的结尾,也不出现实数数据(例如3.50.5)dot的数量就是句子的数目。另外,整理文件的要求是:行首和行尾不能有空格;不能有连续的空格;dot的左侧不能有空格,而右侧必须有一个空格;如果dot在,则右侧也不能有空格。intosunshine□.□fullofthelight□.lea□□andflashing□.frommorn□□tillnight□□.□□intothemoonlight.□whitethansnow.wavesolike□□.□whenwindsblow.□□$ intosunshine.□fullofthelight.□lea□andflashing.frommorn□tillnight.□intothemoonlight.whitethansnow.□wavesolike.□whenthewindsb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售经理转正工作总结
- 民间借贷代理词(34篇)
- 工作中的心得体会
- 有儿子离婚协议书(34篇)
- 甜品店的创业计划书15篇
- 酒店电气火灾应急预案(3篇)
- 2023年地震数据采集系统资金申请报告
- 茶文化与茶艺鉴赏 教案 项目六 品茶韵-常见茶叶的冲泡与鉴赏
- 2023年防水油漆投资申请报告
- 2024年安防电子项目资金需求报告代可行性研究报告
- 学生自主管理委员会常规检查登记表(定)
- DL-T5142-2012火力发电厂除灰设计技术规程
- 江苏省南京市鼓楼区+2023-2024学年九年级上学期期中物理试题(有答案)
- 新时代铁路发展面对面全文内容
- 人工智能与语文阅读理解教学
- 老年友善医院创建汇报
- 科学素养培育及提升-知到答案、智慧树答案
- 消防设施操作员报名工作证明(操作员)
- 2024下半年四川省广元市直属事业单位招聘104人历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 市政道路施工工程重难点分析及对策
- 素描教案之素描基础
评论
0/150
提交评论