Linux下Shell编程之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 ABCnabc' python.txt  #在含有122的行前面插入两行ABC和abc(n换行回车)
sed '/122/a ABCnXYZ' 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


感谢大家的阅读,喜欢的可以收藏关注一下!

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>