正则表达式
. 匹配任何单个的字符
* 匹配在它之前的任何数目的单个字符(可以为正则表达式,如.*代表匹配任一字符的任意长度)
^ 匹配紧接着的正则表达式,在行或字符串的起始处
$ 匹配前面的正则表达式,在字符串或行结尾处
[...] 匹配方括号内的任一字符((-)指的是连续字符的范围,(^)则由反向意义)
\{n,m\} 匹配在它前面的单个字符重现的次数区间。\{n\}指的是重现n次;
\{n,\}则为至少重现n次,\{n,m\}为重现n至m次
\{ \} 将\与\之间的模式存储在特殊的“保留空间”(最多9个)。可通过\1至\9使用存储的模式
如:\{ab\}.*\1表示ab组合的两次重现,中间可存在任何数目的字符。
{n,m} 与\{n,m\}一样,ERE(扩展的正则表达式)
+ 匹配前面正则表达式的一个或多个实例 ERE
? 匹配前面正则表达式的0个或一个实例 ERE
| 匹配于|符号前或后的正则表达式 ERE fast|slow(可以匹配序列)
() 匹配于方括号里面的正则表达式群 ERE
\(ab\)\(cd\)[def]*\2\1
\(why\).*\1
\([[:alpha:]_][[:alnum:]_]*\) = \1
\(["‘]\).*\1
sed命令
sed [option] ‘command‘ input_file
常用的option
-n 只列出经过sed处理的那些行
-e 直接在指令列模式上进行sed的动作编辑
-f filename 直接将sed的动作写在一个文件内
-r 让sed支持扩展的正则表达式
-i 直接修改读取的文件内容,而不是由屏幕输出
选中要处理的行
/PATTERN/ 表示符合正则表达式PATTERN的行
1 or 2 ... $ 表示第几行,$表示最后一行
1,$ 表示第一行到最后一行
常用的命令有以下几种(使用命令前应参考上面选中相应的行):
a \ 在当前选择的行的后面加上字符串
sed ‘1a \add one‘ test.txt 在第一行后面添加一行add one
sed ‘1,$a \add one‘ test.txt 在第一行到最后一行的所有行后面添加一行add one
sed ‘/first/a \ add one‘ test.txt 在包含first的行的后面添加一行..
c \ 将当前选中的行替换成字符串
sed ‘$c \add one‘ test.txt 将最后一行替换成字符串add one
sed ‘4,$c \add one‘ test.txt 将第四行到最后一行的内容替换成add one
sed ‘/^ha.*day$/c \add one‘ test.txt 将以ha开头,以day结尾的行替换成add one
d 删除当前选中的行
i \ 在当前选中的行的前面插入字符串
p 打印当前选择的行到屏幕上
s/PATTERN/string/[g|i] 将符合PATTERN的字符串替换成string
sed ‘/line/text/g‘ 将所有的line替换成test g(global) 不加g则只会替换本行第一个line
sed ‘s/\(.*\)line$/\1/g‘ 删除所有line结尾的行中结尾的line