• Mac系统下 脚本sed的简单使用


    Linux Mac 下使用是略有不同的,此处介绍 Mac系统下的 使用

    • 举例子,直接替换
    $ cat test.txt
    111
    222
    333
    $ sed -i "" "s/111/Hello/" test.txt
    $ cat test.txt
    Hello
    222
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    分析命令 sed -i "" "s/111/Hello/" test.txt

    • -i 直接操作文件并不需要备份文件,如果需要备分则使用 -i "benfen"
    • s 代表 substitue 即替换
    • 111 要被代替的文字
    • Hello 要代替的文字
    • test.txt 对应修改的文件
    • sed 全名为 stream editor,流编辑器,用程序的方式来编辑文本,功能相当的强大,此处简单记录下

    修改文件要用-i, 另外基本操作码如下,以及熟悉简单的正则表达式就OK

    s 替换
    c change line
    d 删除line
    i 插入line
    a 追加line
    
    • 1
    • 2
    • 3
    • 4
    • 5

    删 d

    $ sed -i "" "2d" test.txt 删除
    
    • 1
    1. 删除第二行
      sed -i "" "2d" test.txt 2 代表第二行
    2. 删除以什么开头的某行
      sed -i "" "/^C.*/d" test.txt /C.* 代表 以C 开头的行数,.* 是通配符
    3. 删除包含什么的行
      sed -i "" "/2/d" test.txt 2 代表包含 2 的行
    4. 删除空行
      sed -i "" "/^$/d" test.txt

    增 a I

    在 Mac 系统是原生于bsd系, 所以此处添加 和 插入有点奇怪的(a 添加下一行,i 插入上一行)

    sed "$line a\ (注意此处有空格,要在下一行添加文本)
    $value(如果想换行要把"写到下一行)
    " $file
    
    • 1
    • 2
    • 3
    sed -i "" "2 a\   
    aaa
    " test.txt
    
    • 1
    • 2
    • 3
    sed -i "" "2 i\   
    xxx
    " test.txt
    
    • 1
    • 2
    • 3

    其他规则如删除差不多,就是要注意 \ 要换行的,好麻烦

    查 p

    $ sed -n  "p" test.txt  // 输出
    
    • 1
    1. 输出所有
      sed -n 'p' test.txt
    2. 输出第二行
      sed -n '2p' test.txt 2 代表所有
    3. 输出前缀为 1 的行
      sed -n '/^1.*/p' test.txt

    改 s

    $ sed -i  "" "s/pattern/replace/" test.txt 
    $ sed -i  "" "n,ms/pattern/replace/g" test.txt //指定行
    
    • 1
    • 2
    1. 修改某个字符串
      sed -i "" "s/Hello/xxxx/" test.txtHello 表示要修改的文字,xxx 表示替代的
    2. 修改某行的指定
      sed -i "" "4s/xxxx/aaa/" test.txt 4 代表第四行

    shell在文本第一行和最后一行添加字符串

    sed -i '1 i DELIMITER INSERTDELIMITER' filename
    sed -i '1 i DELIMITER INSERTDELIMITER' filename
    
    sed '1i 添加的内容' file    #这是在第一行前添加字符串
    sed '$i 添加的内容' file    #这是在最后一行行前添加字符串
    sed '$a添加的内容' file    #这是在最后一行行后添加字符串
    sed '1 a\num1\n\num2\n' /etc/passwd   #在第1行后插入两行内容
    sed '1 i\num1\n\num2\n' /etc/passwd   #在第1行前插入两行内容
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    sed的简单使用就介绍到这里

  • 相关阅读:
    性能测试常用术语
    Linux11 --- 进程替换exec系列
    SpringCloud - Spring Cloud Alibaba 之 Gateway 集成Sentinel (十一)
    Java基础-继承性
    数据在内存中是如何存储的?(上)
    SpringMVC 源码学习 返回值处理
    Laravel框架中的目录结构都有什么作用?
    C#上位机系列(4)—示波器一新窗口的建立
    C++日期类的基本实现
    【最佳实践】瀚高数据库 Windows企业版v6.0.4 的安装
  • 原文地址:https://blog.csdn.net/qcx321/article/details/127801932