Linux Sed命令使用

常用功能 :增删改查 ,过滤 取行

 

  语法格式  sed   选项   sed命令  输入文件

 

sed命令执行流程

  概括流程:sed软件是从文件或者管道读取一行,输出一行,再读取一行,再处理一行.......

 

  1) a  追加文本到指定的行后

  2) i   插入文本到指定行前

 

a

单行增加 

多行增加

i

 

d

sed 机制,对匹配feixue到后面两行进行操作,如果在面没有匹

 

sed 软件可以对单行或多行进行处理,如果在sed命令前面不指定地址范围,那么默认会匹配所有行

用法:n1【,n2】 {sed-command}

例子: 

     10 {sed-command}   对第10行进行操作

     10,20 {sed-commands}  对10到20行进行操作,包括10行,20行

     10,+20 {sed-commands}  对10行到30行进行操作,包括10行,30行

      1~2 {sed-commands}     对1,3,5,7,_行进行操作

      10,${sed-commands}   对10行到最后一行进行操作,包括第10行

      /oldboy/ {sed-commands}   对匹配oldboy的行操作

     /oldboy/,/Alex/ {sed-commands}  对匹配oldboy的行到匹配Alex的行操作

     /oldboy/ ,$ {sed-commands}   对匹配oldboy的行到最后一行的操作

     /oldboy/,10 {sed-commands}   对匹配oldboy的行到第10行的操作。注意,如果前10行没有匹配到oldboy,sed软件会显示10行以后匹配oldboy的行,如果有

    1,/Alex/ {sed-commands}  对匹配oldboy的行到匹配Alex的行操作   对第1行到匹配Alex的行进行操作

    /oldboy/,+2 {sed-commands}   对匹配oldboy的行到最后两行的操作

 

     文本替换

    s:  单独使用,将每一行中第一处匹配的字符串进行替换 

    g: 每一行进行全部替换

   -i: 修改文件内容

 

   sed  -i  ‘s/a/b/g’ person.txt

   sed -i     's#a#b#g'  person.txt   

  将文本中所有的a替换成b

   sed -i     '3s#a#b#g'  person.txt   

  将文本中第三行所有的a替换成b

   sed -i     '3s#a#b#'  person.txt   

  将文本中第三行第一个a替换成b

 

特点:

           1  两边是引号,引号里面的两边分别为s和g,中间是三个一样的字符/或#作为定界符。#能在替换内容包含/有助于区别。定界符可以是任意的符号如:或 |  等,但当替换内容包含定界符时,需要转移 

           2  定界符/或者# 第一个和第二个之间的就是被替换的内容,第二个和第三个之间的是替换后的内容。

           3  第一个和第二个定界符之间可以用正则表达式,但第二个和第三个之间不能,必须是具体的。

           4  默认sed软件是对模型空间操作,而-i 选项会更换磁盘的上文件的内容。

 

sed 的后置引用

 

 

& 符号

 

 

后置引用与&符号的联合使用

 

   p 输出指定内容,但默认会输出两次结果,因此使用n取消默认输出

   

 

 

 

sed 后向引用 

将用户名与登录shell换位置

cat /etc/passwd | sed -nr 's#([^:]+)(:.*:)(/.*$)#\3\2\1#gp'

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值