暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux操作文本三剑客之sed命令

干货食堂 2022-12-31
409

sed简介

sed是linux中提供的一个外部命令,它是一个行(流)编辑器,非交互式的对文件内容进行增删改查的操作,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。它和文本编辑器有本质的区别。

区别是:文本编辑器: 编辑对象是文件 行编辑器:编辑对象是文件中的行

也就是前者一次处理一个文本,而后者是一次处理一个文本中的一行。这个是我们应该弄清楚且必须牢记的,否者可能无法理解sed的运行原理和使用精髓。

sed 命令

语法:

    sed [options] ‘{command}[flags]’ [filename]    
    # 中括号内容必有 大括号内容可有可无
    sed # 执行命令
    [options] # 命令选项
    {command}[flags] # sed内部选项和参数
    [filename] # 文件



      命令选项
      -e script 将脚本中指定的命令添加到处理输入时执行的命令中 多条件,一行中要有多个操作
      -f script 将文件中指定的命令添加到处理输入时执行的命令中
      -n 抑制自动输出
      -i 编辑文件内容
      -i.bak 修改时同时创建.bak备份文件。
      -r 使用扩展的正则表达式
      ! 取反 (跟在模式条件后与shell有所区别)


      sed常用内部命令
      a 在匹配后面添加
      i 在匹配前面添加
      p 打印
      d 删除
      s 查找替换
      c 更改
      y 转换 N D P


      flags
      数字 表示新文本替换的模式
      g: 表示用新文本替换现有文本的全部实例
      p: 表示打印原始的内容
      w filename: 将替换的结果写入文件



      替换所有匹配到的关键字

        sed 's/原字符串/替换字符串/g'
        # 在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个

        直接将替换好的结果重新写入文本

        -i  参数就是写入原文本

          sed 's/ ,/g' a.txt -i ## 改变测试数据,将空格替换为逗号

          将换行符替换成逗号

          注意:这个比较特殊,因为sed默认是一行一行处理的,所以你想把换行符给替换掉还不能用常规的替换方法,必须这样写

             sed ":a;N;s/\\n/,/g;ta" a.txt

            将逗号替换成换行符

              sed 's/,/\n/g' a.txt

              将每行开头和结尾添加特定的字符

              -e  是多次替换  

              "^"代表行首,"$"代表行尾

                sed -e 's/^/"/g'  -e 's/$/"/g' a.txt


                上面的例子100%你会用到,非常值的学习下sed的强大语法。

                linux操作文本三剑客之awk命令

                用IDEA创建一个vert.x 的web项目

                分享下阳了是一种什么感觉

                盘点下我最近看过的电视剧《四》

                java如何获取当前进程ID

                文章转载自干货食堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论