文本处理之sed
1、概述
sed是文本编辑器,作用是对文本的内容进行增删改查。
和vim不一样,sed是按行进行处理。
sed一次处理一行内容,处理完一行之后紧接着处理下一行,一直到文件的末尾
模式空间:临时储存,修改的结果临时保存的地方,不写入磁盘,文件的内容不会发生变化,展示完即删除。
写入:把修改写入到磁盘当中。
2、sed的选项
选项 | 说明 |
-e | 指定命令处理的文本文件,多个执行操作需要加上-e |
-f | 高级脚本模式 |
-i | 修改目标文件,使之生效 |
-n | 显示script处理之后的结果 |
3、sed的操作符
操作符 | 说明 |
s | 替换,替换指定的字符串 |
d | 删除选定的行 |
a | 新增,在指定行的下面插入一条新的内容 |
i | 新增,在指定行的上面插入一条新的内容 |
c | 整行替换为指定的内容 |
y | 字符替换(转换前后的字符长度必须保持一致) |
p | 打印 |
r | 支持扩展正则表达式(读取和输出) |
所有的操作符最好用单引号引起来的,用双引号可能会有歧义
练习
-
sed的打印功能
-
sed的删除功能
-
sed对文件内容进行替换
s只能对字符串,s/旧字符/新字符/操作符
g 把所有匹配标准的字符串全部替换,只在替换中生效
c 整行替换 /旧字符/c 新字符
y只能单个字符,且字符串长度要一致 y/旧字符/新字符/
-
sed的插入和新增
a 新增 下一行
i 新增 上一行
r 读取然后写入
$a 把内容直接插入到文件的最后一行
$i 把内容直接插入到文件的最后一行和倒数第二行之间
$r 直接读取文件的内容,然后输出到目标文件的行尾
-
脚本模式
#f脚本模式,在第一个文件当中写好了替换的命令或者其他的sed操作,用第一个的脚本修改第二个文件
sed -f 文件1 文件2
-
不删除文件,只清空文件的内容
sed -i 'd' 文件名
cat /dev/null > 文件名
-
sed当中的字符串和字符位置的交换
-
取出版本号
-
查看指定时间内的所有日志
sed -n '/Nov 27 12:32:41/,/Nov 27 13:30:01/p' /var/log/syslog #按时间查找