sed的用法

作者: 生信编程日常 | 来源:发表于2020-04-12 22:16 被阅读0次

    sed是一个在linux下很好用的文件处理工具,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增等。

    参数说明:

    -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
    -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
    -h或--help 显示帮助。
    -n或--quiet或--silent 仅显示script处理后的结果。
    -V或--version 显示版本信息。

    常用操作:

    a :新增, a 的后面可以接字串,而这些字串会在下一行出现
    c :行取代, c 的后面可以接字串,这些字串可以取代某几行!
    d :删除行
    i :插入,i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    p :打印,即将某个选择的数据print出来
    s :字符串取代

    sed命令主要是:sed +参数+范围+操作 +要操作的文件。
    如:sed -n '1d' a.txt #删除第一行
    -n 为quiet或silent模式,1为选择第一行,d为删除

    1.删除:d

    sed '$d' a.txt             #删除最后一行
    sed '1,2d' a.txt           #删除第一行到第二行
    sed '2,$d' a.txt           #删除第二行到最后一行
    

    对行的处理:
    1 选择第1行。
    2,5 选择2到5行,共4行。
    1~2 选择奇数行。
    2~2 选择偶数行。
    2,+3 和2,5的效果是一样的,共4行。
    3,$ 从第3行到文件结尾。

    范围的选择还可以使用正则匹配,如:
    /ab/,+2 选择出现ab字样的行,以及后面的2行。
    /^a/,/b/ 选择以a开头的行,和出现b字样行之间的数据。

    2.打印某行: p

    sed -n '1,2p' a.txt       #打印第一行到第二行
    

    使用模式进行查询

    sed -n '/hello/p' a.txt    #查询包括关键字hello所在所有行
    sed -n '/\$/p' a.txt        #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
    

    3.增加一行或多行字符串: a

    sed '1a hello' a.txt  #第一行后增加字符串"hello"
    sed '1,3a hello lily' a.txt #第一行到第三行后各增加字符串"hello lily"
    sed '1a drink hello\nlily' a.txt   #第一行后增加多行,使用换行符\n
    

    4.替代某一行或者某几行:c

    sed '1c Hello' a.txt                #第一行代替为Hello
    sed '1,2c Hello' a.txt          #第一行到第二行代替为Hello
    

    5.替换一行中的某部分: s

    格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)

    sed 's/yes/no/g' a.txt  #替换yes为no
    

    6.插入 :i

    sed -i '$a end' a.txt        #在文件a中最后一行直接输入"end"
    

    删除匹配行

    sed -i '/匹配字符串/d'  a.txt  
    sed -i '/^a.*/d' a.txt
    

    替换匹配行中的某个字符串

    sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/g' a.txt
    sed -i 's/^a.*/hello/g' a.txt 
    

    欢迎关注!

    参考:
    https://www.runoob.com/linux/linux-comm-sed.html
    https://blog.csdn.net/qq_34834325/article/details/78523112

    相关文章

      网友评论

        本文标题:sed的用法

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