sed(Stream Editor) 流编辑器, 对标准输出或文件逐行进行处理
语法格式
- 第一种形式:
stdout | sed [option] "pattern command"
- 第二种形式:
sed [option] "pattern command" file
sed的选项
选项 | 含义 |
---|---|
-n | 只打印模式匹配行 |
-e | 直接在命令行进行sed编辑,默认选项 |
-f | 编辑动作保存在文件中,指定文件执行 |
-r | 支持扩展正则表达式 |
-i | 直接修改文件内容 |
sed.txt
I love python
I love PYTHON
Hadoop is bigdata frame
sed -n -r '/python|PYTHON/p' sed.txt
sed -in 's/love/like/gp' sed.txt
sed中的pattern详解
匹配模式 | 含义 |
---|---|
10command | 匹配到第10行 |
10,20command | 匹配从10行开始,20行结束 |
10,+5command | 匹配从第10行开始,到第16行结束 |
/pattern1/command | 匹配到pattern1的行 |
/pattern1/,/pattern2/command | 匹配到pattern1的行开始,到匹配pattern1的行结束 |
10,/pattern1/command | 匹配从第10行开始,到匹配到pattern1的行结束 |
/pattern1/,10command | 匹配到pattern1的行开始,到第10行匹配结束 |
sed中的编辑命令详解
类别 | 编辑命令 | 含义 |
---|---|---|
查询 | p | 打印 |
增加 | a, i, r, w | 行后追加, 行前追加, 外部文件读入,外部文件读入行后追加, 匹配行写入外部文件 |
删除 | d | 删除 |
修改 | s/old/new, s/old/new/g, s/old/new/2g/, s/old/new/ig | 第一个替换, 整行全部替换, 从第二个到整行替换, 忽略大小写的全行替换 |
加上**=**标志,就是显示行号
注意在脚本中使用,引用变量的时候,使用双引号
利用sed查询特定内容
查询命令 | 含义 |
---|---|
1p | 打印第一行内容 |
1,10p | 打印1-10行内容 |
1,+5p | 打印1,1+5行内容数据 |
/pattern1/p | 打印每一行中匹配到pattern1的行内容 |
/pattern1/,/pattern2/p | 打印匹配到pattern1的行直到匹配到pattern2的所有行的内容为止 |
/pattern1/,10p | 打印匹配到pattern1的行到10行的所有行内容 |
10,/pattern1/p | 打印第10行直到匹配到pattern1的所有行内容 |
对于sed提取,可以使用替换删除某些字符,实现剥离
可以多用几个管道实现多重规则
利用sed删除特定内容
查询命令 | 含义 |
---|---|
1d | 删除第一行内容 |
1,10d | 删除1-10行内容 |
1,+5d | 删除1,1+5行内容数据 |
/pattern1/d | 删除每一行中匹配到pattern1的行内容 |
/pattern1/,/pattern2/d | 删除匹配到pattern1的行直到匹配到pattern2的所有行的内容为止 |
/pattern1/,10d | 删除匹配到pattern1的行到10行的所有行内容 |
10,/pattern1/d | 删除第10行直到匹配到pattern1的所有行内容 |
- 删除配置文件中所有的注释行和空行
sed -i '/[:blank:]*#/d;/^$/d' nginx.confg
- 在配置文件中所有不以#开头的行前面添加*符号, 注意:以#开头的行不添加
sed -i 's/[^#]/\*&/g nginx.conf'
利用sed修改文件内容
查询命令 | 含义 |
---|---|
1s/old/new/ | 替换第一行内容 |
1,10s/old/new/ | 替换1-10行内容 |
1,+5s/old/new/ | 替换1,1+5行内容数据 |
/s/old/new/attern1/p | 替换每一行中匹配到pattern1的行内容 |
/s/old/new/attern1/,/pattern2/p | 替换匹配到pattern1的行直到匹配到pattern2的所有行的内容为止 |
/s/old/new/attern1/,10p | 替换匹换配到pattern1的行到10行的所有行内容 |
10,/s/old/new/attern1/p | 替换第10行直到匹配到pattern1的所有行内容 |
总结
大致和vim一样, 主要是pattern和cmd的理解