NSD SHELL DAY(五)

1 案例1:sed基本用法
1.1 问题
本案例要求熟悉sed命令的p、d、s等常见操作,并结合正则表达式,完成以下任务:
• 删除文件中每行的第二个、最后一个字符
• 将文件中每行的第一个、第二个字符互换
• 删除文件中所有的数字
• 为文件中每个大写字母添加括号
1.2 方案
sed文本处理工具的用法:

  1. 用法1:前置命令 | sed [选项] ‘条件指令’
  2. 用法2:sed [选项] ‘条件指令’ 文件… …
    相关说明如下:
    • 条件可以是行号或者/正则/
    • 没有条件时,默认为所有条件
    • 指令可以是增、删、改、查等指令
    • 默认sed会将所有输出的内容都打印出来,可以使用-n屏蔽默认输出
    • 选项中可以使用-r选项,让sed支持扩展正则
    1.3 步骤
    实现此案例需要按照如下步骤进行。
    步骤一:认识sed工具的基本选项
    sed命令的常用选项如下:
    -n(屏蔽默认输出,默认sed会输出读取文档的全部内容)
    -r(让sed支持扩展正则)
    -i(sed直接修改源文件,默认sed只是通过内存临时修改文件,源文件无影响)
    1)sed命令的 -n 选项
    执行p打印等过滤操作时,希望看到的是符合条件的文本。但不使用任何选项时,默认会将原始文本一并输出,从而干扰过滤效果。比如,尝试用sed输出/etc/hosts的第1行:
  3.  [root@zlz ~]# sed '1p' /etc/hosts
     127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    

可以发现所有的行都被显示出来了(第1行重复2次)。—— 正确的用法应该添加 -n 选项,这样就可以只显示第1行了:

  1.  [root@zlz ~]# sed -n '1p' /etc/hosts
     127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    

行号可以是连续的行号,如打印passwd第3到第6行账户的信息:

  1.  [root@zlz ~]# sed  -n '3,6p' /etc/passwd
     bin:x:1:1:bin:/bin:/sbin/nologin
     daemon:x:2:2:daemon:/sbin:/sbin/nologin
     adm:x:3:4:adm:/var/adm:/sbin/nologin
     lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    

2)sed命令的 -i 选项
正常情况下,sed命令所做的处理只是把操作结果(包括打印、删除等)输出到当前终端屏幕,而并不会对原始文件做任何更改:

  1.  [root@zlz ~]# sed 'd' /etc/passwd                      //删除所有行
     [root@zlz ~]# cat /etc/passwd                          //查看原始文本,并未改动
    

若希望直接修改文件内容,应添加选项 -i 。
比如,直接删除test.txt(自行创建一个任意内容的文件)的第1~4行:

  1.  [root@zlz ~]# sed -i '1,4d' test.txt            //删除操作
     [root@zlz ~]# cat test.txt                      //确认删除结果
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值