Linux-sed

作者: ssttIsme | 来源:发表于2023-11-06 22:34 被阅读0次

    1.使用s命令进行文本替换操作

    srcStr要替换的文本,dstStr目标文本

    sed 's/srcStr/dstStr/' /file
    
    sed 's/root/ROOT/' /etc/passwd
    

    2.可以指定其他字符作为分隔符(可以使用替换标记g替换每行中所有匹配的地方)

    sed 's!root!ROOT!' /etc/passwd
    sed 's#3#7#g' file
    

    3.数字指明替换第几次匹配到的文本

    sed 's/root/ROOT/2' /etc/passwd
    

    4.g替换所有匹配到的文本

    sed 's/root/ROOT/g' /etc/passwd
    

    5.p打印与替换命令中指定模式(srcStr)相匹配的行

    sed 's/root/ROOT/p' /etc/passwd
    

    只输出被匹配替换过的行

    sed -n 's/root/ROOT/gp' /etc/passwd
    

    6.w file将替换的结果写入文件中

    sed -n 's/root/ROOT/g w change.txt' /etc/passwd
    

    7.正则匹配

    sed -r 's/^west/north/' file
    

    8.使用数字方式进行寻址

    # 将第3行中所有bin替换成BIN
    sed '3 s/bin/BIN/g' /etc/passwd
    # 将第2到第5行中所有bin替换成BIN
    sed '2,5 s/bin/BIN/g' /etc/passwd
    # 将第10到最后一行中所有bin替换成BIN
    sed '10,$ s/bin/BIN/g' /etc/passwd
    

    9.使用文本模式过滤行

    sed -rn '/^root/ s/bin/BIN/g' /etc/passwd
    sed -n '/root,/login/  s/bin/BIN/g' /etc/passwd
    

    10.删除行

    #删除匹配root的行
    sed '/root/d' /etc/passwd
    #删除第2行到最后一行
    sed '2,$d' /etc/passwd 
    

    11.插入和附加文本

    #在每一行的上面增加文本
    sed 'i\Insert every line' /etc/passwd
    #在第一行钱增加一个新行
    sed '1i\Insert first line' /etc/passwd
    #在第三行前增加一个新行
    sed '3a\Append third line' /etc/passwd
    #最后一行增加一个新行
    sed '$a\Append last line' /etc/passwd
    

    12.修改行

    #替换第三行
    sed '3 c\New text' /etc/passwd
    #替换匹配root的行
    sed '/root/ c\New text' /etc/passwd
    #替换第2行到第4行的内容为一行文本New text
    sed '2,4c\New text' /etc/passwd
    

    13.逐字转换

    echo abcdefghicdsbca |sed 'y/acg/ACG/'
    

    相关文章

      网友评论

          本文标题:Linux-sed

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