1. 简介:sed(stream editor,流编辑器)用来编辑文本的一个工具,主要使用正则模式匹配来完成其功能;sed并不会对文件内容进行修改,只是把处理过后的内容进行输出。
2. 选项:
^:一行的开始
$:最后一行或者一行的结束
\<:词首
\>:词尾
.:任意单个字符
*:某个字符出现了0词或者多次
[]:字符集合,其中a-z表示从a到z的所有26个字符,^a表示非a
4. 替换命令s:
sed 's/my/your/g' my.txt: 所有my替换成your
sed '3s/my/your/g' my.txt: 只对第三行进行处理
sed '3,6/my/your/g' my.txt: 对3-6行进行处理
sed 's/my/your/1' my.txt:处理每行匹配的第一个
sed 's/my/your/3g' my.txt:处理每行第三个及以后的匹配
sed '1,3s/my/your/g; 3,$s/this/that/g' my.txt:一次执行多个匹配模式
sed -e '1,3s/my/your/g' -e '3,$s/this/that/g' my.txt:同上
sed 's/my/[&6]/g' my.txt:在my两边加上中括号,&表示匹配内容
sed 's/my\([^,]*\),*is \(.*\)/\1:\2/g' my.txt:结果只取两个括号中的内容
5. N命令:将下一行纳入当前缓冲区做匹配,即偶数行并入奇数行匹配
6. 添加命令:a:append, i:insert
sed "1 i This is my monkey, my monkey's name is wukong" my.txt:第一行前插入一行
sed "$ a This is my monkey, my monkey's name is wukong" my.txt:最后一行后追加一行
sed "/fish/a This is my monky" my.txt: 找到fish的行在后面追加一行
7. 替换命令:c
sed "2 c This is my monky":第二行替换成This is my monky
8. 删除命令:d
sed '2d':删除第二行
9. 显示匹配结果命令:p
sed '/fish/p' my.txt:有fish的行显示两次
2. 选项:
-i : 直接修改文件内容
-n: 只显示匹配行
3. 正则表达式符号解析:^:一行的开始
$:最后一行或者一行的结束
\<:词首
\>:词尾
.:任意单个字符
*:某个字符出现了0词或者多次
[]:字符集合,其中a-z表示从a到z的所有26个字符,^a表示非a
4. 替换命令s:
sed 's/my/your/g' my.txt: 所有my替换成your
sed '3s/my/your/g' my.txt: 只对第三行进行处理
sed '3,6/my/your/g' my.txt: 对3-6行进行处理
sed 's/my/your/1' my.txt:处理每行匹配的第一个
sed 's/my/your/3g' my.txt:处理每行第三个及以后的匹配
sed '1,3s/my/your/g; 3,$s/this/that/g' my.txt:一次执行多个匹配模式
sed -e '1,3s/my/your/g' -e '3,$s/this/that/g' my.txt:同上
sed 's/my/[&6]/g' my.txt:在my两边加上中括号,&表示匹配内容
sed 's/my\([^,]*\),*is \(.*\)/\1:\2/g' my.txt:结果只取两个括号中的内容
5. N命令:将下一行纳入当前缓冲区做匹配,即偶数行并入奇数行匹配
6. 添加命令:a:append, i:insert
sed "1 i This is my monkey, my monkey's name is wukong" my.txt:第一行前插入一行
sed "$ a This is my monkey, my monkey's name is wukong" my.txt:最后一行后追加一行
sed "/fish/a This is my monky" my.txt: 找到fish的行在后面追加一行
7. 替换命令:c
sed "2 c This is my monky":第二行替换成This is my monky
8. 删除命令:d
sed '2d':删除第二行
9. 显示匹配结果命令:p
sed '/fish/p' my.txt:有fish的行显示两次
sed -n '/fish/p' my.txt:只显示匹配fish的行