文本三剑客——sed命令

sed命令(文本编辑)

 

1.概述:

  • sed命令是利用脚本的指令来处理、编辑文本文件;
  • sed主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等;
 

2.用法:

格式:sed [参数]
常用参数:
  • -e或--expression=<script>:以选项中指定的script来处理输入的文本文件(默认选项)
  • -f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件
  • -n或--quiet或--silent:只显示可匹配的行
  • -e:直接在命令行模式上进行sed动作编辑
  • -r:支持扩展正则表达式
  • -i:直接去修改文本内容
 

3.查询文本的方式:

使用行号和行号范围:
  • x:行号
  • x,y:从x到y行
  • x,y!:除x到y行

/pattern:查询包含模式的行
/pattern/,/pattern/:查询包含两个模式的行
/pattern/,y:y行内查询包含匹配模式的行
x,/pattern/:x行后查询包含匹配模式的行
 

4.编辑命令:

  • p:打印匹配的行
  • =:显示文件行号
  • a\:指定行号后添加新文本
  • i\:指定行号前添加新文本
  • d:删除定位行
  • c\:用新文本内容替换定位到的行
  • w filename:写文本到另一个文件中
  • r filename:读文本到另一文本到本文件中
  • s ///:替换

替换标记:

* g:行内全局替换
* p:显示替换成功的行
* w:将替换成功后的内容保存到指定文件中

分隔符:

* ///:
* @@@:

  • q:第一个模式匹配后立即退出
  • {}:在定位执行行的命令组,用;进行分隔
1.只打印文本的第1到4行内容
[root@localhost]# sed -n '1,4p' fstab

2.只打印文本中包含xfs的行
[root@localhost]# sed -n '/xfs/p' fstab

3.只打印文本中以UUID开头任意内容的行
[root@localhost]# sed -n '/^UUID=.*/p' fstab     #.*:任意内容

4.只显示文件中以UUID开头任意内容所在行的行号
[root@localhost]# sed -n '/^UUID=.*/=' fstab

5.在/etc/hosts文件中第3行位置添加主机名解析内容
[root@localhost]# sed -i '3a\192.168.10.10 node1' /etc/hosts

6.删除上述添加的解析内容
[root@localhost]# sed -i '3d' /etc/hosts

7.替换以UUID开头任意内容所在行的内容
[root@localhost]# sed -i '/^UUID=.*/c\test......' fstab

8.将fstab文件中以#开头的所有内容保存至fstab_part文件中
[root@localhost]# sed '/^#.*/w fstab_part' fstab

9.将fstab_part文件内容读写到另一个文件1.txt文件中第2行以后位置
[root@localhost]# sed -i '2r fstab_part' 1.txt

10.将1.txt文本中hello全部替换成大写
[root@localhost]# sed -i 's/hello/HELLO/g' 1.txt

11.将替换的内容保存至1_part.txt文本中
[root@localhost]# sed 's/HELLO/Hi/g w 1_part.txt' 1.txt

12.为/tmp/1.txt文件中前3行的行首加#号
[root@localhost]# sed -i '1,3s@\(^.\)@#\1@g' /tmp/1.txt

13.将/tmp/1.txt文件中前10行的行首加#号取消
[root@localhost]# sed '1,10s@^#\+\(.*\)$@\1@g' /tmp/1.txt  

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值