sed用来把文档或字符串里面的文字经过一系列编辑命令转换为另一种格式输出。sed通常用来匹配一个或多个正则表达式的文本进行处理
1.基本语法
1 2 3 4
| sed -n -i -e 's/re/ve/p' file -n 只打印匹配到的行,配合P打印使用; -i 编辑源文件 -e 可以接多个命令
|
2.搜索命令
1 2 3 4 5 6
| sed '/ad/s/re/ve/g' file sed '2s/re/ve/g' file s搜索,!s排除匹配ad之外的所有行 g全局,若不写只替换该行首个匹配,即默认1 ad匹配地址,若不写即所有行
|
3.删除命令
1 2 3 4 5 6 7
| sed 're/d' file sed '/re/,/ve/d' file sed 're,/ve/d' file !d 反转不删除匹配 1d 删除第一行 $d 删除最后一行
|
4.分组命令
1 2 3 4 5 6
| sed ‘/re/,/ve/{/^$/d}’ file sed '/re/,/ve/{ >/^$/d >s/ca/pa/ >} file
|
5.多重指令
1 2 3 4 5 6 7
| 1、sed ‘s/re/ve/; s/ca/pa/’ file 2、sed -e ‘s/re/ve/’ -e ‘s/ca/pa/’ file 3、sed ' > s/re/ve/ > s/ca/pa/' list
|
6.脚本文件使用
1 2 3 4 5
| $ cat scriptfile s/re/ve/ s/ca/pa/ $ sed -f scriptfile file
|
7.sed常用命令汇总
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| sed G sed '/^$/d;G' sed '/regex/G' sed 's/^/#/' sed ‘s/\(.*\):\(.*\)’/\2:\1/'
# 将每两行连接成一行(类似“paste”) sed '$!N;s/\n/ /'
|
8.sed特性:
• 如果没有指定地址,那么命令将应用于每一行
• 如果只有一个地址,那么命令应用于这个地址匹配的每一行
• 如果指定了由逗号分隔的两个地址,那么命令应用于匹配第一个地址的第一行和它后面的行,直到匹配第二个地址的行(包括此行)
• 如果地址后面有感叹号(!),那么命令就应该用于不匹配该地址的所有行