文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>sed学习笔记(五)--不常用的命令

sed学习笔记(五)--不常用的命令

时间:2007-12-20  来源:kinwin

   sed还有很多不常用的命令,虽然不常用,但这些命令却也正是sed的技巧之所在,可利用他们写出功能强大的sed一句话脚本。

y/source-chars/dest-chars/   source char对应的替换为dest char.source char和dest char 的数目在de-escape后数目相等。


a\text   可接受地址或地址范围。用来在当前行后插入一行(Append text),执行时是在输出        当前pattern space和读入下一行之间输出a后文本

注:默认是以\开始文本。(GNU扩展)当a后未跟\,则以第一个非空字符作为文本的开始(同样适用于i和c)

例:

$ cat new
kinwin said:"I'm
kinwin"
kinwin@ustc-king:~
$ sed '/said/a   school' new
kinwin said:"I'm
school
kinwin"
kinwin@ustc-king:~
$ sed '/said/a\   school' new
kinwin said:"I'm
   school
kinwin"


i\text  在当前行前插入text。执行顺序: 执行到这个命令是立刻输出text


c\text   删除行或行范围的文本,然后用text替换行或行范围的最后一行。若未指明地址范围,则对每一行分别执行c操作。

注意a,i和c在处理二地址范围时的不同。


=   打印当前行号


l n   输出当前pattern space内容

non-printable characters (and the \ character) are printed in C-style escaped form
分割长行,行的字符数由n指定(GNU扩展),若n=0,表示不折叠行,默认为选项中-l n的指定


r filename 执行顺序同a,从文件中获取内容append,若文件不存在,则认为文件为空,不输出错误信息。GNU可指定文件为/dev/stdin


w filename   将pattern space内容写入file。注意实现上sed在读入第一行文本前会创造或覆盖file,然后file一直打开,以后的w不会重新打开和关闭这个文件。

可以尝试一下:sed '/none/w new' kin,如果none无匹配,new也创造了,只是内容为空

现在到sed最容易做文章的几个命令了

D    删除pattern space的第一行内容。如果pattern space中还有内容,则以当前的pattern space开始下一循环,而不读入新的一行。


N    读入下一行append到pattern space,如果无下一行,sed退出


P   打印pattern space的第一行


h   用当前pattern space的内容覆盖hold space


H   将当前pattern space的内容append到hold space

注:小写字母表覆盖,大写一般表追加。下不详述


g,G   hold space ->pattern space


x     hold space <-> pattern space


: label   作标记,便于跳转


b label   直接跳到label处,相当于goto.若label为空,则直接跳到最后。输出pspace,开始下一循环.


t label   前面的s替换成功则跳转,否则不跳转。若label为空,则跳到最后。

GNU独有的一些命令

e [command]   e后未跟command时,shell把patten space中的内容作为命令执行,输出替换pattern space。若e后跟command,shell执行command,结果执行i操作。

$ cat new
date
uname -s
kinwin@ustc-king:~
$ sed 'e' new
2007年 12月 20日 星期四 15:06:20 CST
Linux
$ sed 'e echo "hello"' new
hello
date
hello
uname -s



Q [exit_code]   同q,只是退出时不打印当前pattern space的内容


R filename   同r filename,区别:r是一次读入所有文本行append,而R是一次只读入一行。


T lable     和t label相反,s不成功时跳转


W filename   同w,区别:W只输入pattern space中的第一行

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载