美文网首页
文本处理工具sed

文本处理工具sed

作者: 吕艳凯 | 来源:发表于2020-04-26 14:56 被阅读0次

sed(stream editor)是一种非交互式的流编辑器。sed操作只是对"流"按行进行处理,并不会修改原文件。
ps:若需要生成新文件,则使用重定向将"流"输出到指定文件,或者使用"-i"参数对原文件直接修改。

sed -i '2d' test.txt                          //-i 对源文件进行修改
sed '2d' test.txt > new.txt             //删除第二行内容后的输出流保存到新文件new.txt

sed命令对文件内容输出流增删改操作

增加内容
1.直接插入文本
使用 i 或者 a 插入文本,i 表示匹配行之前插入,a 表示匹配行之后插入

$sed '2 i insert' test.txt            //在第二行之前插入
line 1
insert
line 2
line 3
line 4
line 5

$sed '2 a insert' test.txt          //在第二行之后插入文本
line 1
line 2
insert
line 3
line 4
line 5

$sed '$ a insert' test.txt              //$表示最后一行,在最后一行后插入文本
line 1
line 2
line 3
line 4
line 5
insert

$sed '/line 2/ i insert' test.txt         //使用正则/line 2/匹配内容的匹配行前插入文本
line 1
insert
line 2
line 3
line 4
line 5

2.以读取文件输出流插入文本
使用r命令在指定行或者匹配行后将读取的文件流动插入文本

$sed '$ r output.txt' test.txt       将output.txt内容插入到最后一行后
line 1
line 2
line 3
line 4
line 5
output
doc

由以上两个插入文本的命令不难发现,对于sed命令插入文本
首先是先设定插入行(指定行数或者匹配行)
然后设定插入方式(后插前插)
最后是插入内容(字符串或者文本输出流,文本输出流就调整第二个参数为r)

删除内容
删除内容是增加内容的反过程,使用d命令
先指定行(直接指定行号范围或者正则匹配行)
配合d命令进行删除

sed '2d' test.txt      //删除第二行内容
sed '1,2d' test.txt      //删除第一行到第二行
sed '2,$d' test.txt      //删除第二行到最后一行
sed '2!d' test.txt      //只保留第二行数据
sed '1,2!d' test.txt      //只保留第一、二行数据
sed '/line/d'  test.txt    //含有line的行删除
sed '/^$/d'  test.txt     //删除空行,正则/^$/代表空

修改内容
1.整体文本替换
s命令将匹配内容进行替换
首先指定s命令
然后指定匹配内容
然后指定替换内容
最后指定替换次数(以行为单位,每行匹配到的第几个内容被替换,默认为第一个,使用g表示所有)

$sed 's/line/Line/' test.txt         //每行匹配内容line的第一个替换为Line       
Line__line 1
Line__line 2
Line__line 3
Line__line 4
Line__line 5

$sed 's/line/Line/2' test.txt        //每行匹配内容line的第二个替换为Line       
line__Line 1
line__Line 2
line__Line 3
line__Line 4
line__Line 5

$sed 's/line/Line/g' test.txt            //使用g表示匹配内容全部替换
Line__Line 1
Line__Line 2
Line__Line 3
Line__Line 4
Line__Line 5

2.字符转换
y命令逐个字符匹配转换,默认全文本全部替换

sed 'y/li/ya/' test.txt              //逐个字符匹配,l替换为y,i替换为a
yane__yane 1
yane__yane 2
yane__yane 3
yane__yane 4
yane__yane 5

sed多命令处理方式

1.直接的方式
在sed命令后其实是有-e参数的只是进行了省略

sed -e '2d' text.txt  //等价于 sed -e '2d' text.txt
sed -e '2d' -e '1 a insert' text.txt      //当使用多个参数命令时 -e 不允许丢弃
sed -e '2d' -e '1 a insert' text.txt      //等价于sed -e '2d;1 a insert' text.txt  使用;分割多个命令

$sed '2d;1 a insert' test.txt         
line__line 1
insert
line__line 3
line__line 4
line__line 5

2.sed脚本的使用
命令很多,直接打在控制太很不方便,则建议先些sed的脚本
使用-f 指定脚本文件为参数,编辑目标文本
ps:脚本文件后缀任意定义,单最好统一后缀方便查找

$cat sed.rules                //sed脚本
2d
3 i insert
$ a last

$sed -f sed.rules test.txt              //以sed脚本处理test.txt
line__line 1
insert
line__line 3
line__line 4
line__line 5
last

$mv sed.rules sed.sed

$sed -f sed.sed test.txt           //任意文件后缀都可以
line__line 1
insert
line__line 3
line__line 4
line__line 5
last

相关文章

  • sed命令基本用法

    sed文本处理工具的用法: 用法1:前置命令 | sed [选项] '条件指令'用法2:sed [选项] ...

  • Linux文本处理三剑客——awk

    文本处理三工具:grep,sed,awk grep:文本过滤工具:pattern; sed:行编辑器:模式空间、保...

  • Linux文本处理三剑客——sed

    文本处理三工具:grep,sed,awk grep:文本过滤工具:pattern sed:行编辑器:模式空间、保持...

  • Linux文本处理三剑客——grep

    文本处理三工具:grep,sed,awk grep:文本过滤工具:pattern sed:行编辑器:模式空间、保持...

  • sed基础命令

    一、sed文本处理工具的用法: 用法1:前置命令 | sed [选项] '条件指令' 用法2:sed [选...

  • inux学习 Day15-sed基本用法

    文本处理工具:grep,sed(流编辑器),awk sed基本用法:sed(Stream EDitor)行编辑器(...

  • sed介绍

    sed是什么 sed是linux文本处理工具三剑客(grep,sed,awk)之一,用来处理文本的流编辑工具。主要...

  • note_17.3_awk

    GNU awk: 文本处理三工具:grep, sed, awk grep, egrep, fgrep:文本过滤工具...

  • Linux上文本处理三剑客awk

    GNU awk:gawk 文本处理三工具:grep, sed, awkgrep, egrep, fgrep:文本过...

  • sed

    文本处理sed sed(Stream EDitor, 行编辑器):处理文本的工具。sed是一种流编辑器,它一次处...

网友评论

      本文标题:文本处理工具sed

      本文链接:https://www.haomeiwen.com/subject/lejdwhtx.html