标记说明
表示行内全面替换。
表示打印行。
表示把行写入一个文件。
表示互换模板块中的文本和缓冲区中的文本。
表示把一个字符翻译为另外的字符(但是不用于正则表达式)
子串匹配标记
&
已匹配字符串标记
符号说明
匹配行开始,如:/^sed/匹配所有以sed开头的行。
匹配行结束,如:/sed$/匹配所有以sed结尾的行。
匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。
匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头linux常用命令,紧跟ed的行。
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。():分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。
&
保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
\<
匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。
\>
匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x\{m\}
重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。
x\{m,\}
重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
x\{m,n\}
重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。
sed ‘2p’ filename #打印第二行(第二行会打印两遍),并且会打印文本全部内容
sed -n ‘2p’ filename #只打印第二行
sed -n '3.5p' filename #打印3到5行
sed -n '/findstr/p' filename #打印匹配到findstr的行
sed -n '/findstr1/,findstr2/p' #打印匹配分的findstr1和findstr2的行
sed -n '3,5{=;p}' filaname #打印3到5行,并且打印行号
sed -n '3.5!(=;p)' filename #打印除了3到5行的其他行 !表示对条件取反,其他情况也适用。
sed -n '/pattern/p' filename #打印符合正则表达式pattern的行,正则表达式不在此介绍
sed -e '1d' filename #删除第一行linux常用命令,但是不修改原文件。实际上把查找中的p换成d,即由打印变成删除动作。而-e 选项更换为-i选项,表明直接修改原文件
# -i表明直接修改源文件,注意。
sed -i '/str1/s/^/str2/' filename #在有str1的行首增加str2字符
sed -i 's/str1/str2&/' filename #在str1前增加str2字符串
sed -i 's/str1/&str2/' filename #在str1后增加str2字符串
sed -i '/str1/s/$/str2/' filename #在有str1的行尾加上str2字符串
sed -i '/str1/i\str2/' filename #在有str1的前一行增加一行,内容为str2
sed -i '/str1/a\str2/' filename #在有str1的后一行增加一行,内容为str2,如果要添加多行,需要添加\n转义符,例如 '/str1/astr2\nstr3'
sed -i 's/^/str/' filename #每行开头添加str字符串
sed -i 's/$/str/' filename #每行结尾添加str字符串
sed -i '1,3s/^/str/' filename #1到3行行首添加str字符串
sed -i '/str1/s@/str2@str3@' filename #将有str1的行中的str2替换为str3,但是只修改一次
sed -i '/str1/s@/str2@str3@/ng' filename #与上一条作用类似,但是是修改n次,如果不带n,则表示修改全文
sed是一个非常有用且重要的文本处理工具之一,以上就是sed命令的一些常见操作介绍。