sed markmap document

A sed learn note,you can pasten it to markmap to build a beautiful mindmap learn mannual.
 avatar
movit
markdown
4 years ago
4.0 kB
22
Indexable

sed

sed语法

  • sed [option] 'sed-command' input-file
  • 流程:读取一行,执行所有sed-command;重复上述步骤

  • multi sed-command usage 1) sed -f 'file.sed' input-file 2) sed -e 'sed-cmd1' -e 'sed-cmdn' input-file 3) sed [option] '{ sed-command1 sed-commandn }' input-file
  • 常用sed-option 1) -n:仅显示处理后的数据 2) -e:以指定的sed-cmd处理数据 3) -f:以脚本文件中的sed-cmd处理数据 4) -i:直接对input-file进行操作

sed打印行

  • 打印某一行:sed -n 'num p' input-file
  • 打印指定范围:sed -n 'num1,num2 p' input-file $为最后一行
  • 打印某行及其后几行:sed -n 'num1,+num2 p' input-file
  • 间隔打印:sed -n 'num1num2 p' input-file 打印奇数行:sed -n '12 p' input-file 打印偶数行:sed -n '2~2 p' input-file
  • 匹配打印:sed -n '/pattern/ p' input-file
  • 打印匹配行到指定行:sed -n '/pattern/,num p' input-file
  • 打印匹配行及其后几行:sed -n '/pattern/,+num p' input-file
  • 打印两匹配项及之间内容:sed -n '/pattern1/,/pattern2/ p' input-file

sed删除行

  • 删除指定行:sed -i 'num d' input-file
  • 删除指定范围行:sed -i 'num1,num2 d' input-file
  • 删除某行及其后几行:sed -i 'num1,+num2 d' input-file
  • 间隔删除行内容:sed -i 'num1~num2 d' input-file
  • 删除匹配行:sed -i '/pattern/ d' input-file
  • 删除匹配行至某行:sed -i '/pattern/,num d' input-file
  • 删除匹配行及其后几行:sed -i '/pattern/,+num d' input-file
  • 删除匹配项之间的内容:sed -i '/pattern1/,/pattern2/ d' input-file
  • 删除空行:sed -i '/^$/ d' input-file

sed保存行

  • 保存某一行:sed -n 'num w filename' input-file
  • 保存指定范围行:sed -n 'num1,num2 w filename' input-file
  • 保存某行及其后几行:sed -n 'num1,+num2 filename' input-file
  • 间隔保存:sed -n 'num1~num2 w filename' input-file
  • 保存匹配行:sed -n '/pattern/ w filename' input-file
  • 保存匹配行到指定行:sed -n '/pattern/,num w filename' input-file
  • 保存匹配行及其后几行:sed -n '/pattern/,+num w filename' input-file
  • 保存匹配项及之间内容:sed -n '/pattern1/,/pattern2/ w filename' input-file

sed替换

  • 语法:sed -i '[address-range|pattern] s/original-string/substitute-string/[flag]' input-file

  • #替换命令标志 1) g:全局替换标志,替换行中所有匹配项 2)1..512:第num次匹配项替换 3)p:替换完成后打印 4)w:替换完成后写到文件中 5)i:忽略original-string大小写替换 6)e:替换后当作shell命令执行 7)分界符:默认分界符是/,替换文本存在/可以使用转义字符\也可以用其他符号替代 sed -i 's#/home/myfile#/home/oldfile#' input-file 8)&:匹配到的想可以用&代替 sed -i 's/name/[&]/' input-file,name change to [name] 9)分组替换:sed -i 's/\(match-string\)/\1/' input-file 最多可以分成9组,\1至\9

sed追加

  • 在某行后追加内容:sed -i 'num a need_add_contents' input-file
  • 在某行后追加多行内容:sed -i 'num a need_add1\nneed_add_two' input-file
  • 匹配后追加内容:sed -i '/pattern/ a need_add_content' input-file
  • 匹配后追加多行:sed -i '/pattern/ a need_add1\nneed_add2' input-file

sed插入

  • 在某行前追加内容:sed -i 'num i need_add_contents' input-file
  • 在某行前追加多行内容:sed -i 'num i need_add1\nneed_add_two' input-file
  • 匹配后插入内容:sed -i '/pattern/ i need_add_content' input-file
  • 匹配后插入多行:sed -i '/pattern/ i need_add1\nneed_add2' input-file

sed修改

  • 修改某行内容:sed -i 'num c new_content' input-file
  • 匹配后修改某行内容:sed -i '/pattern/ c new_content' input-file