目录
一.sed编辑器的相关介绍及执行过程
1.sed介绍
- sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流
- sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中
2.sed编辑器的执行过程
- 读取:目标文件的每行数据一次加入到缓冲区(模式空间)里,默认从第一行开始读取
- 执行:使用定义的增删改查命令来处理读取到缓冲区行数据
- 显示:将处理后的行数据输出到屏幕显示
二.sed命令格式
1.基本格式
sed -e '操作' 文件1 文件2 ... 在命令行指定操作命令处理文件行数据
sed -n -e '操作' 文件1 文件2 ... 在命令行指定操作命令处理文件行数据
2.在一个脚本文件里定义操作命令
sed -f 脚本文件 目标文件 .... 使用指定脚本文件里的操作命令处理文件行数据
sed -i 直接根据操作命令修改原文件行数据
3.常用操作
s | 替换,替换指定字符 |
d | 删除,删除选定的行 |
a | 增加,在当前行下方增加一行指定内容 |
i | 插入,在选定行上方插入一行指定内容 |
c | 替换,将选定行替换为指定内容 |
y | 字符转换,转换前后的字符长度必须相同 |
p | 打印行内容。如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输出。其通常与"-n"选项一起使用 |
= | 打印行号 |
l (小写L) | 打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t) |
三.打印功能
1.默认打印方式
sed -e 'p' 文件
2.防止出现重复打印
2.1.
sed -n -e 'p' 文件
2.2.
显示行号
sed -n '=' 文件名
2.3.
显示特殊符号
sed -n 'l' 文件
2.4.
显示行号及行内容
sed '=' 文件名
sed -n -e '=' -e 'p' 文件名
3.使用地址打印
3.1.以数字形式打印行区间
单独某一行
区间行
当前行及后面连续行
奇数行跟偶数行
sed -n -e 'p' -e 'n'
sed -n -e 'n' -e 'p'
sed -n -e '2,${n;p}' test1.txt
- 第一次过程 读取 第二行 执行 先n 跳到下一行 (第三行) 再p 打印第三行内容
- 第二次过程 读取 第四行 执行 先n 跳到下一行 (第五行) 再p 打印第五行内容
- 第三次过程 读取 第六行 执行 先n 跳到下一行 (第七行) 再p 打印第七行内容
- ......
3.2.文本模式过滤行内容
对包含字符串进行过滤打印
sed -n -e '/xx/p' 文件
用基础正则表达式打印
四.删除功能
1.全删
sed 'd' 文件
2.通过行号进行删除
sed -e '行号区间d' 文件
补充
sed '/^$/d' 文件 删除空行
3.匹配字符串内容删除
sed -e '/字符串/d' 文件
4.正则表达式删除
sed -r -e '/正则表达式/d' 文件
五.替换功能
1.常规替换
行范围 s/旧字符串/新字符串/替换标记
2.替换标记
- 数字:表明新字符串将替换第几处匹配的地方
- g:表明新字符串将会替换所有匹配的地方
- p:打印与替换命令匹配的行,与-n一起使用
- w 文件:将替换的结果写到文件中
3.行号区间替换
sed -e '/字符串/ s/old/new/g'
4.打印及修改替换
sed -n -e '行号区间 s/old/new/gp' 打印被修改的行
sed -e '行号区间 s/old/new/gw 保存文件' 保存被修改的行
5.字符串替换
sed -r -e '/正则表达式/ s/old/new/g'
6.正则表达式替换
sed -r -e 's/(xxx)(xxx)(xxx)/\3\2\1/'
7.整行替换
sed -e '行号c 新行内容'
8.单字符替换
sed -e 'y/旧字符/新字符/' 新字符和旧字符的长度要一致
六.插入功能
- a(在指定行下面插入行内容)
- i(在指定行上面插入行内容)
- r(在指定行下面插入整个文件内容)
1.在行下面插入
sed -e '行号区间a 行内容'
sed -r -e '/字符串或正则/a 行内容'
2.在行上面插入
sed -e '行号区间i 行内容'
sed -r -e '/字符串或正则/i 行内容'
七.复制粘贴功能
H(复制指定行到剪切板)
G(将剪切板内容粘贴到指定行下面)
1.复制 粘贴
sed -e 'X,YH;$G' 将X-Y行内容复制粘贴到最后一行下面
2.剪切 粘贴
sed -e 'X,Y{H;d};$G' 将X-Y行内容剪切粘贴到最后一行下面