sed简单使用

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的所有行内容
  1. 删除配置文件中所有的注释行和空行
    sed -i '/[:blank:]*#/d;/^$/d' nginx.confg
  2. 在配置文件中所有不以#开头的行前面添加*符号, 注意:以#开头的行不添加
    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的理解

你可能感兴趣的:(Linux,sed)