sed命令详解

761 阅读2分钟

默认不编辑源文件,仅对模式空间中的数据做处理,处理结束后,将模式空间打印至屏幕

sed基本用法:

sed 选项 匹配模式 文件名

  -n	静默模式,不再显示模式空间里的内容
  -i	直接修改源文件
  -e  	脚本 -e 脚本……:可以同时执行多个脚本
  -r	表示使用扩展表达式 
  -f /PATH/TO/SED_SCRIPT
                sed -f /path/to/scripts  file
	

匹配模式:

1、起始行,结束行

	1,100		从第一行到一百行
	$			最后一行
	例:sed -n '1,4p' /etc/passwd		显示passwd的1到4行的内容

2、/正则表达式/

  /^root/  所有以root开头的行
  例:sed -n /^root/p /etc/passwd		显示passwd中已root开头的行

3、/模式一/,/模式二/ 第一次被模式1匹配到的行开始到第一次被模式二匹配到的行结束

	例:sed -n /^root/,/^ftp/p /etc/passwd		显示passwd中以root开头的行到以ftp开头的行之间的所有行

4、指定的行

	例: sed -n 5p /etc/passwd		显示passwd中的第5行

5、startline,+N 从startline开始,向后的N行

	例:sed -n /^ftp/,+2p /etc/passwd		显示passwd中以ftp开头的行及其下2行

匹配模式:

  d:            删除符合条件的行
  p:            显示符合条件的行 
  a \字符串      在指定的行后面追加新行,内容为字符串
      \n	可以换行
  i \字符串      在指定的行前面追加新行,内容为字符串
  r 路径         将指定的文件的内容添加至符合条件的行处
  w 路径         将指定的范围内的行另存至指定的文件中
  s /字符串(可以用正则表达式)/字符串/修饰符      查找并替换,默认只替换每行中第一次被模式匹配到的字符串
     g			全局替换
     i			忽略字符大小写
     &			引用模式匹配整个串
         例:sed -n s/^root/123/p /etc/passwd		显示passwd中开头是root的行并把开头的root替换为123
  s///: s###, s@@@	
                \(\), \1, \2