sed命令

sed(stream editor)是流编辑器。

Sed软件有两个内置的存储空间:

  • 模式空间(pattern space):是sed软件从文本读取一行文本然后存入的缓冲区(这个缓冲区是在内存中的),然后使用sed命令操作模式空间的内容。
  • 保持空间(hold space):是sed软件另外一个缓冲区,用来存放临时数据,也是在内存中,但是模式空间和保持空间的用途是不一样的。Sed可以交换保持空间和模式空间的数据,但是不能在保持空间上执行普通的sed命令,也就是说我们可以在保持空间存储数据。

调用sed命令有两种方式

  • sed [options] '[Address]command' file(s)
  • sed [options] -f scriptfile file(s)

选项

  • -e command,--expression=command允许多台编辑。
  • -h,--help打印帮助,并显示bug列表的地址。
  • -n,--quiet,--silent取消默认输出。
  • -f,--filer=script-file引导sed脚本文件名。
  • -V,--version打印版本和版权信息。
  • -i,改变文件执行的结果(sed默认是不改变文件)
  • -r,扩展正则表达

Address:

1、Startline,Endline

  • 比如1,100
  • $:最后一行

2、/RegExp/

  • /^root/

3、/pattern1/,/pattern2/

  • 第一次被pattern1匹配到的行开始,至第一次被 pattern2匹配到的行结束,这中间的所有行

4、LineNumber

  • 指定的行

5、Startline,+N

  • 从Startlin开始,向后的N行

COMMAND:

  • d 删除符合条件的行
  • p 打印符合条件的行
  • a \String:在指定的行后面追加新行
  • \n:可以用于换行
  • i \String:在指定的行前面追加新行
  • r file:将指定的文件的内容添加至符合条件的行处
  • #将文件word读进来,放在匹配到abc行的后面
  • w file:将地址指定的范围内的行另存至指定的文件中
  • #会覆盖原有文件内容
  • s///:查找的并替换,默认只替换每行中第一交被匹配到的字符串
  • s/pattern/string/修饰符:查找的并替换,默认只替换每行中第一交被匹配到的字符串
    \(\),\1,\2 后向引用
  • s///g 全局替换,i 忽略字符大小写

元字符集

  • ^行首锚定
  • 打印第一个字母是a的行,-n表示取消默认输出
  • $行尾锁定
  • 打印以字母a结尾的行
  • .匹配一个非换行符的字符
  • *匹配前面的表达式零次或多次
  • +匹配前面的子表达式一次或多次
  • ?匹配前面的子表达式一次或零次
  • []匹配一个指定范围内的字符
  • [^]匹配一个不在指定范围内的字符
  • \(..\)保存匹配的字符
  • &;保存搜索字符用来替换其他字符
  • \<或\b:其后面的任意字符必须作为单词首部出现,例:/\<love/
  • \>或\b:其后面的任意字符必须作为单词尾部出现,例:/love\>/
  • x\{m\}重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。

     

  • x\{m,\}重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。

     

  • x\{m,n\}重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。

  • \w,匹配字母下划线数字
  • \W匹配非字母下划线数字

其它示例

1、取出当前路径的上级目录

2、给每个单词加上[]

3、将aaa BBB顺序更换

发布了38 篇原创文章 · 获赞 14 · 访问量 6400
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章