[关闭]
@llplmlyd 2019-09-30T16:32:41.000000Z 字数 679 阅读 753

sed

Linux


Attention

文件内容并没有改变,除非你使用重定向存储输出或-i

command options

  1. sed [options]
  2. -n 打印匹配到的每一行 不加n参数就会 将全部打印出来
  3. -i 直接将处理的结果写入文件
  4. -i,bak 处理文件前先把文件备份一份
  5. -r 扩展的正则表达式
  6. -e 多点编辑

地址定界

  1. 无指定 默认为全文
  2. 单地址 指定行 n1,n2
  3. /pattern/ 被此处模式所能够匹配的每一行

地址范围

  1. n1,n2
  2. n1,+n2
  3. /pattern1/,/pattern1/
  4. n1, /pattern1/

步进

  1. sed -n '1~2p' #只打印奇数行
  2. sed -n '1~2p' #只打印偶数行

编辑命令vim-command

  1. d delete
  2. p print
  3. a assert 后插
  4. i insert 前插
  5. c 替换为单行或多行文本 支持使用\n实现多行追加
  6. w 保存模式匹配的行到指定文件
  7. r 读取指定文件的文本到模式空间中匹配的行后
  8. = 打印行号
  9. !模式空间中匹配取反 使用单引号
  10. s/// 查找替换
  11. n1,n2/s/
  12. g表示行内全局搜索

demo 示例
sed [comman option] "[n1,n2][vim-command]/pattern/pattern/[g]" filename

  1. sed "1,2s/A/e/g" filename
  2. sed "[n1]c[....]" filename # 将n1 行整行替换成[...]
  3. sed -n "[n1]r/[filepath]" filename # 将filepath的文件读取到filename的n1行之后 输出到屏幕
  4. sed -n '2!p' filename # 打印除了2行之外的所有行,!这里只能使用单引号
  5. sed -n '

高级命令略

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注