




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux sed命令实例详解 功能说明:利用script来处理文本文件。 语法:sed -hnV-e 补充说明:sed可依照script的指令,来处理、编辑文本文件。 参数: -e或expression= 以选项中指定的script来处理输入的文本文件。 -f文件或file= 以选项中指定的script文件来处理输入的文本文件。 -h或help 显示帮助。 -n或quiet或-silent 仅显示script处理后的结果。 -V或version 显示版本信息。 # sed -e s/123/1234/ a.txt 将a.txt文件中所有行中的123用1234替换(-e表示命令以命令行的方式执行;参数s,表示执行替换操作) # sed -e 3,5 a4 a.txt 将a.txt文件中的3行到5行之间所有行的后面添加一行内容为4的行(参数a,表示添加行,参数a后面指定添加的内容) # sed -e 1 s/12/45/ a.txt 把第一行的12替换成45 sed -i s/oldstring/newstring/g grep oldstring -rl yourdir 批量处理通过grep搜索出来的所有文档,将这些文档中所有的oldstring用newstring替换(-i参数表示直接对目标文件操作) $ sed -n s/test/mytest/p example.file (-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。(这是正则表达式中表示开头,该符号后面跟的就是开头的字符串)(参数p表示打印行) $ sed s/wangpan/&19850715/ example.file 表示被替换换字符串被找到后,被替换的字符串通过符号连接给出的字符串组成新字符传替换被替换的字符串,所有以wangpan开头的行都会被替换成它自已加19850715,变成wangpan19850715 $ sed -n s/(love)able/1rs/p example.file love被标记为1,所有loveable会被替换成lovers,而且替换的行会 被打印出来。需要将这条命令分解,s/是表示替换操作,(love)表示选中love字符串,(love)able/表示包含loveable的 行,(love)able/l表示love字符串标记为1,表示在替换过程中不变。rs/表示替换的目标字符串。这条命令的操作含义:只打印替换了 的行 $ sed s#10#100#g example.file 不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。 $ sed -n /love/,/unlove/p example.file 只打印包含love字符串行到包含unlove字符串行之间的所有行(确定行的范围就是通过逗号实现的) $ sed -n 5,/wang/p example 只打印从第五行开始到第一个包含以wang开始的行之间的所有行 $ sed /love/,/unlove/s/$/wangpan/ example.file 对于包含love字符串的行到包含unlove字符串之间的行,每行的末尾用字符串wangpan替换。 字符串$/表示以字符串结尾的行,$/表示每一行的结尾,s/$/wangpan/表示每一行的结尾添加wangpan字符串 $ sed -e 11,53d -e s/wang/pan/ example.file (-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除11至53行,第二条命令用pan替换wang。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。(参数d,表示删除指定的行) $ sed -expression=s/wang/pan/ -expression=/love/d example.file 一个比-e更好的命令是-expression。它能给sed表达式赋值。 $ sed /wangpan/r file example.file file里的内容被读进来,显示在与wangpan匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。参数r,表示读出文件,后面空格紧跟文件名称 $ sed -n /test/w file example.file 在example.file中所有包含test的行都被写入file里。参数w,表示将匹配的行写入到指定的文件file中 $ sed /test/aoh! My god! example.file oh! My god!被追加到以test开头的行的后面,sed要求参数a后面有一个反斜杠。 $ sed /test/ioh! My god! example.file oh! My god!被追加到包含test字符串行的前面,参数i表示添加指定内容到匹配行的前面,sed要求参数i后面有一个反斜杠 $ sed /test/ n; s/aa/bb/; example.file 如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb。参数n,表示读取匹配行的下一个输入行,用下一个命令处理新的行而不是匹配行。Sed要求参数n后跟分号 $ sed 1,10y/abcde/ABCDE/ example.file 把110行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。参数y,表示把一个字符翻译为另外的字符(但是不用于正则表达式) $ sed -i s/now/right now/g test_sed_command.txt 表示直接操作文件test_sed_command.txt,将文件test_sed_command.txt中所有的now用right now替换。参数-i,表示直接操作修改文件,不输出。 $ sed 2q test_sed_command.txt 在打印完第2行后,就直接退出sed。参数q,表示退出 $ sed -e /old/h -e /girl-friend/G test_sed_command.txt 首先了解参数h,拷贝匹配成功行的内容到内存中的缓冲区。在了解参数G,获得内存缓冲区的内容,并追加到当前模板块文本的后面。上面命令行的含义:将包含old字符串的行的内容保存在缓冲区中,然后将缓冲区的内容拿出来添加到包含girl-friend字符串行的后面。隐含要求搜集到缓冲区的匹配行在需要添加行的前面。 $ sed -e /test/h -e /wangpan/x example.file 将包含test字符串的行的内容保存在缓冲区中,然后再将缓冲区的内容替换包含wangpan字符串的行。参数x,表示行替换操作。隐含要求搜集到缓冲区的匹配行在需要被替换行的前面。linux sed命令使用总结(转)比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做:sed -i s/zhangsan/lisi/g grep zhangsan -rl /modules解释一下:-i 表示inplace edit,就地修改文件-r 表示搜索子目录-l 表示输出匹配的文件名这个命令组合很强大,要注意备份文件。(1)sed y/1234567890/ABCDEFGHIJ/ test_sedsed y/1234567890/ABCDEFGHIJ/ filenameABCDEFGHIJBCDEFGHIJACDEFGHIJABDEFGHIJABC注意变换关系是按两个list的位置对应变换其中:test_sed的内容是:1234567890234567890134567890124567890123(2)替换每行所有匹配sed s/01/Ab/g test_sed123456789023456789Ab3456789Ab2456789Ab23注意:第一行的0,1没有分别替换为A,b 删除:d命令 $ sed 2d example-删除example文件的第二行。 $ sed 2,$d example-删除example文件的第二行到末尾所有行。 $ sed $d example-删除example文件的最后一行。 $ sed /test/d example-删除example文件所有包含test的行。替换:s命令 $ sed s/test/mytest/g example-在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。 $ sed -n s/test/mytest/p example-(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。 $ sed s//&localhost/ example-&符号表示替换换字符串中被找到的部份。所有以开头的行都会被替换成它自已加 localhost,变成localhost。 $ sed -n s/(love)able/1rs/p example-love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。 $ sed s#10#100#g example-不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。选定行的范围:逗号 $ sed -n /test/,/check/p example-所有在模板test和check所确定的范围内的行都被打印。 $ sed -n 5,/test/p example-打印从第五行开始到第一个包含以test开始的行之间的所有行。 $ sed /test/,/check/s/$/sed test/ example-对于模板test和west之间的行,每行的末尾用字符串sed test替换。多点编辑:e命令 $ sed -e 1,5d -e s/test/check/ example-(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。 $ sed -expression=s/test/check/ -expression=/love/d example-一个比-e更好的命令是-expression。它能给sed表达式赋值。从文件读入:r命令 $ sed /test/r file example-file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。写入文件:w命令 $ sed -n /test/w file example-在example中所有包含test的行都被写入file里。追加命令:a命令 $ sed /test/a-this is a example example-this is a example被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。插入:i命令 $ sed /test/inew line- example如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。下一个:n命令 $ sed /test/ n; s/aa/bb/; example-如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。变形:y命令 $ sed 1,10y/abcde/ABCDE/ example-把1-10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。退出:q命令 $ sed 10q example-打印完第10行后,退出sed。保持和获取:h命令和G命令 $ sed -e /test/h -e $G example-在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将 打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保 持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中 的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。保持和互换:h命令和x命令 $ sed -e /test/h -e /check/x example -互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。7. 脚本Sed脚本是一个sed的命令清单,启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行为注释行,且不能跨行。8. 小技巧 在sed的命令行中引用shell变量时要使用双引号,而不是通常所用的单引号。下面是一个根据name变量的内容来删除named.conf文件中zone段的脚本:name=zone localhostsed /$name/,/;/d named.confsed -i s/oldstring/newstring/g grep oldstring -rl yourdir例如:替换/home下所有文件中的为sed -i s///g grep -rl /home 二、下面这条命令:perl -pi -e s|ABCD|Linux|g find ./ -type f将调用perl执行一条替换命令,把find命令找到的所有文件内容中的ABCD替换为Linuxfind ./ -type f此命令是显示当前目录下所有的文件上面的“s|ABCD|Linux| g”是perl要执行的脚本,即把所有ABCD替换为Linux如果不写最后的那个g,“s|ABCD|Linux| ”将只替换每一行开头的ABCD 当编辑指令(参照section2.2)在命令列上执行时,其前必须加上选项-e。其命令格式如下:sed-e编辑指令1-e编辑指令2.文件档其中,所有编辑指令都紧接在选项-e之後,并置於两个特殊字元间。另外,命令上编辑指令的执行是由左而右。一般编辑指令不多时,使用者通常直接在命令上执行它们。例如,删除yel.dat内1至10行资料,并将其馀文字中的yellow字串改成black字串。此时,可将编辑指令直接在命令上执行,其命令如下:sed-e1,10d-es/yellow/black/gyel.dat在命令中,编辑指令1,10d(解5)执行删除1至10行资料;编辑指令s/yellow/black/g(解6),yellow字串替换(substuite)成black字串。2.2sed的编辑指令sed编辑指令的格式如下:address1,address2functionargument其中,位址参数address1、address2为行数或regularexpression字串,表示所执行编辑的资料行;函数参数functionargument为sed的内定函数,表示执行的编辑动作。下面两小节,将仔细介绍位址参数的表示法与有哪些函数参数供选择。2.2.1位址(address)参数的表示法实际上,位址参数表示法只是将要编辑的资料行,用它们的行数或其中的字串来代替表示它们。下面举几个例子说明(指令都以函数参数d(参照section4.2)为例):删除档内第10行资料,则指令为10d。删除含有man字串的资料行时,则指令为/man/d。删除档内第10行到第200行资料,则指令为10,200d。删除档内第10行到含man字串的资料行,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 输电安全规程培训课件
- 小麦栽培种植学课件
- 小鸭子课件教学课件
- 股权激励与员工培训结合的协议模板
- 定制衣柜全屋设计与智能家居安全解决方案合同
- 小鬼当家课件
- 输入汉字的公开课课件
- 谈骨气课件教学课件
- 说明文探究题课件
- 小蝌蚪的秘密课件
- 九年级化学人教版基于特定需求设计和制作简易供氧器(教学设计)
- SCAMPER创新思维模型
- 乡镇庆中秋迎国庆活动方案
- 山东科学技术出版社小学一年级上册综合实践活动教案
- DL∕T 1281-2013 燃煤电厂固体废物贮存处置场污染控制技术规范
- 思念混声合唱简谱
- 家庭健康指导员培训方案及流程
- 机械制图教案(完整版)
- 贷款的培训课件
- 半导体车间安全培训
- 多源数据融合技术-概述
评论
0/150
提交评论