Linux文本处理三剑客之sed

sed:

常用选项

  • -n:不输出模式空间内容到屏幕,即不自动打印
  • -e:多点编辑
  • -f:FILE 从指定文件读取编辑脚本
  • -r,-E:使用扩展正则表达式
  • -i.bak:备份文件并原处编辑
  • -s:将多个文件视为独立文件,而不是单个连续的长文件流
  • #说明:
  • -ir:不支持
  • -i,-r:支持
  • -ri:支持
  • -ni:危险选项,会清空文件

地址格式

1、不给地址:对全文进行处理

2、单地址:

  • #:指定的行,$:最后一行
  •  /pattern/:被此处模式所能够匹配到的每一行

3、地址范围:

  • #,# 从#行到第#行,例如3,6即是从第3行到第6行
  • #,+# 从#行到+#行,3,+4表示从3行到第7行
  • /pat1/,/pat2/
  • #,/pat/
  • /pat/,#

4、步进:~

  •   1~2 奇数行
  •   2~2 偶数行

命令

  • p 打印当前模式空间内容,追加到默认输出之后
  • IP 忽略大小写输出
  • d 删除模式空间匹配的行,并立即启用下一轮循环
  • a [\]text 在指定行后面追加文本,支持使用\n实现多行追加
  • i [\]text 在行面前插入文本
  • c[\]test 替换行为单行或多行文本
  • w file 保存模式匹配的行至指定文件
  • r file 读取指定文件的文本至模式空间中匹配到的行后
  • = 为模式空间中的行打印行号
  • ! 模式空间中匹配行取反处理
  • q 结束或退出sed

查找替换

  • s/pattern/string/修饰符 查找替换,支持使用其他分隔符,可以是其他形式:s@@@,s###
  • 替换修饰符:g、p、w、I
  • g 行内全局替换
  • p 显示替换成功的行
  • w /PATH/FILE 将替换成功的行保存至文件中
  • I,i 忽略大小写


版权声明:本文为qq_34948450原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。