文章目录
- 一、sed是什么?
- 二、sed具体用法
- 1.sed语法格式
- 2.数据定位
- 3.正则定位
- 4.sed修改文本内容
- 5.sed多行文本处理
一、sed是什么?
sed是通过非交互式修改文档,依次处理,同时也可以对文本做增删改查等操作。
二、sed具体用法
1.sed语法格式
sed 选项 (定位符)指令 文件名 #(定位符)指令 想对文件的哪一行进行操作
sed -n (定位符)指令 文件名 #对指定行屏蔽默认输出
sed -r (定位符)指令 文件名 #对指定行支持扩展正则
sed -i (定位符)指令 文件名 #写入命令
2.数据定位
sed通过行号定位需要修改的内容
(案例):
sed "2p" python.txt #不加-n选项,默认全文打印,第二行打印了两边(有一遍是人为要求打印)
sed -n "2p" python.txt #屏蔽默认输出,打印第二行内容
sed -n "1,4p" python.txt #屏蔽默认输出,打印第一行内容到第三行内容
sed -n "1~2p" python.txt #输出(奇数行)第1行开始步长为2
sed -n "2~2p" python.txt #输出(偶数行)第2行开始步长为2
3.正则定位
sed 通过正则匹配对应数据,然后编辑对应内容,sed 里 使用正则需用两个/ / 括起来
(案例):
grep "^abc" python.txt
sed -n "/^abc/p" python.txt #过滤root开头的行,并用sed打印
grep -E "[0-9]{3}" python.txt #过滤包含三个数字的行
sed -rn "/[0-9]{3}/p" python.txt #扩展正则-r
4.sed修改文本内容
p打印行
d删除行
c替换行
s替换关键词
=:打印行号
free | sed -n '/Mem/p' #过滤内存信息
df -h | sed -n '/\/$/p' #过滤磁盘根分区信息
sed -n '2!p' python.txt #不打印第二行,其他都打印
sed 'd' python.txt #删除python.txt全文,没有定位条件匹配所有行
sed '/^$/d' python.txt #删除空行
sed '4c XXXX' python.txt #将python.txt文件的第四行替换为XXXX
sed 's#2046#XXXX#g' python.txt #以#为sed的指令替换符
sed -n '1=' python.txt #打印第一行的行号
5.sed多行文本处理
i :插入 (-i 选项才会修改源文件)
a :追加
r :读取文件|导入文件内容
w :文件另存为|导出文件内容
sed '3i Abc' python.txt #在第三行前ABC_XYZ
sed '/122/i ABC\nabc' python.txt #在含有122的行前面插入两行ABC和abc(\n换行回车)
sed '/122/a ABC\nXYZ' python.txt #在含有122的行后面插入两行ABC和XYZ(\n换行回车)
sed '/123/r python.txt' test.txt #将python.txt导入到test.txt的含有123的行后面
sed '/123/w 123.txt' python.txt #将python.txt文件中所有包含123的行另存为新文件123. txt
感谢大家的阅读,喜欢的可以收藏关注一下!
更多推荐
Linux下Shell编程之sed用法
发布评论