sed详解
一、简介sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理
·
一、简介
sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。
默认情况下,所有的输出行都被打印到屏幕上。
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。
具体过程如下:
首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。
sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。
处理完输入文件的最后一行后,sed便结束运行。
sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
二、命令用法
- 命令使用格式:
sed [OPTION]... 'script' [input-file]...
sed [常用选项] '[地址定界] [编辑命令]' [input-file]
- 常用选项:
-n :不输出模式中的内容至屏幕
-e script:可以指定一个sed命令中指定编辑多个脚本或多个编辑命令,也称为多点编辑;
-f /PATH/TO/SCRIPT_FILE :从指定文件中读取编辑脚本
-r :支持使用扩展正则表达式
-i :直接编辑源文件
- 地址定界
1、不给地址:对全文进行处理
2、单地址
# :指定的行
/pattern/: 被此模式所能匹配到的每一行
3、地址范围
#,# :从几行到几行
#,+# :从当前开始,向下总共#行
#,/pat1/:从指定行 到匹配行
/pat1/,/pat2/:从匹配的行1 到 匹配的行2
4、步进:~
1~2 :所有奇数行
2~2 :所有偶数行
- 编辑命令
d:删除(删除模式空间中的内容);建议不要于-n使用
p:显示模式空间中的内容;
a \text:在行后追加文本"text",支持使用\n实现多行追加
i \text:在行前插入文本"text",支持使用\n实现多行追加;
c \text:把匹配到的行替换为此处指定的文本"text";
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定文本中;
r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行处后面;文件合并
=:为模式匹配到的行打印行号
!:条件取反;
地址定界!编辑命令;
s///:查找替换,其分隔符号可自行指定,常用的有:s@@@, s###等
替换标记:
g:全局替换;
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:显示替换成功的行;
- 高级编辑命令
h:把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g:从保持空间取出数据覆盖至模式空间
G:从保持空间取出内容追加至模式空间
x:把模式空间中的内容与保持空间中的内容进行互换
n:读取匹配到的行的下一行至模式空间
N:追加匹配到的行的下一行至模式空间
d:删除模式空间中的行
D:删除多行模式空间中的所有行
三、使用示例
## 将/etc/fstab文件中的1-5行进行删除
sed '1,5d' /etc/fstab
## 显示奇数行
sed -n '1~2p' /etc/fstab
## /etc/fstab第三行的前面插入一个"# My-Insert"的信息;然后在该行后面插入该信息
sed '3i \# My-Insert' /etc/fstab
sed '3a \# My-Insert' /etc/fstab
## 删除所有注释行
sed '/^#/d' fstab
## 删除/boot/grub/grub.conf文件中所有以空白开头的行行首的空白字符
sed 's/^[[:space:]]\+//' /boot/grub/grub.conf
## 删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
sed 's/^#[[:space:]]\+//' /etc/fstab
## echo 一个绝对路径给sed命令,取出其基名,取出其目录名
echo "/etc/sysconfig/"|sed 's/[^/]\+\/\?$//'
## 查询某个时间段的日志
## sed-n '/开始时间/,/结束时间/p'日志文件
sed -n '/2019-04-08 17:00:02/,/2019-04-08 23:59:36/p' file.log
更多推荐
已为社区贡献12条内容
所有评论(0)