一、元字符集
1)^锚定行的开始 如:/^sed/匹配所有以sed开头的行。
2)$ 锚定行的结束 如:/sed$/匹配所有以sed结尾的行。
3). 匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。
4)* 匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
5)[] 匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。
6)[^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
7)\(..\) 保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
8)& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
9)\< 锚定单词的开始,如:/\<love/匹配包含以love开头的单词的行。
10) \> 锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。
11) x\{m\} 重复字符x,m次,如:/0\{ 5\}/匹配包含5个o的行。
12) x\{m,\} 重复字符x,至少m次,如:/o\{ 5,\}/匹配至少有5个o的行。
13) x\{m,n\}重复字符x,至少m次,不多于n次,如:/o\{ 5,10\}/匹配5--10个o的行。
二、实例
1)替换:s命令
# sed -e 's/123/1234/' a.txt
将a.txt文件中所有行中的123用1234替换(-e表示命令以命令行的方式执行;参数s,表示执行替换操作)
# sed -e '1 s/12/45/' a.txt
把第一行的12替换成45
(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。(^这是正则表达式中表示开头,该符号后面跟的就是开头的字符串)(参数p表示打印行)
# sed -n 's/\(love\)able/\1rs/p' example.file
love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。需要将这条命令分解,s/是表示替换操作,\(love\)表示选中love字符串,\(love\)able/表示包含loveable的行,\(love\)able/\l表示love字符串标记为1,表示在替换过程中不变。rs/表示替换的目标字符串。这条命令的操作含义:只打印替换了的行