sed基本用法

1.sed基本用法
问题
本案例要求熟悉sed命令的p、d、s等常见操作,并结合正则表达式,完成以下任务:
删除文件中每行的第二个、最后一个字符
删除文件中每行的第二个、最后一个单词
将文件中每行的第一个、第二个字符互换
将文件中每行的第一个、第二个单词互换
删除文件中所有的数字、行首的空格
为文件中每个大写字母添加括号
方案
sed文本处理工具的用法:
用法1:前置命令 | sed [选项] ‘编辑指令’
用法2:sed [选项] ‘编辑指令’ 文件… …
相关说明如下:
其中,“编辑指令”用来实现过滤操作,由“[定址符]处理动作”组成
而“定址符”用来定义需要操作的文本,由“[地址1 [,地址2]]组成,地址1为起始位置,地址2为结束位置
未指定“定址符”时,默认处理所有文本
只指定地址1时,只处理与地址1相匹配的文本
步骤
实现此案例需要按照如下步骤进行。
步骤一:认识sed工具的基本选项
1)sed命令的 -n 选项
执行p打印等过滤操作时,希望看到的是符合条件的文本。但不使用任何选项时,默认会将原始文本一并输出,从而干扰过滤效果。比如,尝试用sed输出/etc/rc.local的第1行:
[root@svr5 ~]# sed ‘1p’ /etc/rc.local
#!/bin/sh

This script will be executed after all the other init scripts.

You can put your own initialization stuff in here if you don’t

want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
可以发现所有的行都被显示出来了。—— 正确的用法应该添加 -n 选项,这样就可以只显示第1行了:
[root@svr5 ~]# sed -n ‘1p’ /etc/rc.local
#!/bin/s
而在执行d删除等过滤操作时,希望看到的是删除符合条件的文本之后还能够被保留下来的文本,所以这时候就不应该使用 -n 选项了。比如,删除/etc/rc.local文件的第1-4行文本:
[root@svr5 ~]# sed ‘1,4d’ /etc/rc.local

want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
2)sed命令的 -i 选项
正常情况下,sed命令所做的处理只是把操作结果(包括打印、删除等)输出到当前终端屏幕,而并不会对原始文件做任何更改:
[root@svr5 ~]# cp /etc/rc.local rclocal.txt //复制为新文件,用作测试
[root@svr5 ~]# cat rclocal.txt //确认测试文件内容
#!/bin/sh

This script will be executed after all the other init scripts.

You can put your own initialization stuff in here if you don’t

want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
[root@svr5 ~]# sed ‘1,4d’ rclocal.txt //删除第1~4行,输出结果

want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
[root@svr5 ~]# cat rclocal.txt //查看原始文本,并未改动
#!/bin/sh

This script will be executed after all the other init scripts.

You can put your own initialization stuff in here if you don’t

want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
若希望直接修改文件内容,应添加选项 -i 。
比如,直接删除rcloal.txt文件的第1~4行,不输出结果:
[root@svr5 ~]# sed -i ‘1,4d’ rclocal.txt //删除操作
[root@svr5 ~]# cat rclocal.txt //确认删除结果

want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
下文中关于

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董筱杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值