1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| Options: -n 只显示经过sed处理后的行 -e 用于多个条件处理,顺序执行,即一次读取,多次处理 -f 从文件中读取处理命令 -i 直接更改文件,如果加后缀则先重命名原文件再创建一个新文件 -c 需配合-i加后缀使用,处理前先复制一份原文件到备份文件,然后直接修改原文件 -r 使用扩展正则,支持分组引用,最多支持引用9组\1到\9 -s 如果指定了多个文件,则分别处理每个文件而非合并后再处理 -u 不缓存数据 -z 不换行输出 --follow-symlinks 跟随链接跳转
地址: N 匹配指定行 $ 匹配最后一行 N~step 匹配指定行并以step为步进,如1~2表示奇数行,2~2表示偶数行 /regexp/ 正则匹配,添加i或I表示忽略大小写匹配/xxx/i,遇到包含路径的字符/时需要转义为\/ \@regexp@ 正则匹配,使用这种方式,无需转义路径,@可以替换为任意字符 /regexp/,/regexp/ 正则范围匹配 N,/regexp/ 指定行到正则匹配行 /regexp/,$ 正则匹配行到文件末尾(即最后一行) N,M 匹配N到M行 N,+M 匹配N到N+M行
命令: a\ 追加内容到匹配行的下一行,最后的\可以省略,支持使用\n追加多行 i\ 追加内容到匹配行的上一行,同上 c\ 改写匹配行,同上 d 删除匹配行 q 退出sed脚本,可以指定退出代码 r 读取指定文件中的内容追加到当前输出 R 按行读取并追加 h 复制模式空间中的内容到内存缓冲区 H 追加模式空间中的内容到内存缓冲区 g 复制内存缓冲区的内容到模式空间 G 追加内存缓冲区的内容到模式空间 l 显示不可打印字符 n 读取匹配行的下一行复制到模式空间 N 读取匹配行的下一行追加到模式空间 p 显示匹配行 s/regexp/string/g 正则匹配并替换,可使用&来代指匹配到的内容,加g表示全部替换,加i或I表示忽略大小写,支持使用其他分隔符如@,# w 保存匹配到的行到指定文件 y 字符替换 = 显示匹配行号 ! 命令取反,如!p即显示不匹配的行 {} 匹配后如需执行多次处理需用{}括起来,如'/word/{s//& (world) /;s/^/+ /}'
正则表达式元字符,和grep命令的正则语法一致 ^ 匹配行首,如^abc匹配所有以abc开头的行 $ 匹配行尾,如abc$匹配所有以abc结尾的行 ^$ 匹配空行 ^[[:space:]]*$ 匹配空白行,包括空格或tab所占的行 . 匹配除换行符(\n,\r)之外的任意单个字符,如a.c匹配abc,a2c等 * 匹配零个或多个先前字符,即匹配次数>=0次,如a*c匹配ac,aac,aaac等 .* 匹配任意长度的任意字符,如a.*c匹配ac,abc,aabbcc等 ? 匹配零个或一个先前的字符,即匹配次数<=1次,如a?c匹配c,ac + 匹配一个或多个先前的字符,即匹配次数>=1次,如a+c匹配ac,aac,aaac等 | 或匹配,如a|b|c匹配a或b或c () 分组,如abc([1-9])?匹配abc,abc1,abc123 [] 匹配指定范围内的任意单个字符,如[Aa]bc匹配Abc,abc [^] 取反,匹配指定范围之外的任意单个字符,如[^Aa]bc匹配除了Abc和abc之外 \ 转义符,如\$匹配$本身 \< 匹配单词词首,如\<abc匹配以abc开头的单词 \> 匹配单词词尾,如abc\>匹配以abc结尾的单词 {n} 匹配n次,如a{2}匹配aa {n,} 至少匹配n次,即>=n次,如a{2,}匹配aa,aaa等 {n,m} 匹配n-m次,包括n次和m次,即[n-m]次,其中n<=m,如a{2,4}匹配aa,aaa,aaaa {,m} 最多匹配m次,即<=m次,如ab{,2}匹配a,ab,abb \b 匹配单词边界,如\broot\b匹配单词root \B 匹配非单词边界,如root\B匹配rooter而不匹配root \w 匹配字母,数字和下划线,等同于[A-Za-z0-9_] \W 匹配非\w的字符 \s 匹配空白字符
|