美文网首页
sed常用文本操作-文本替换

sed常用文本操作-文本替换

作者: Jerry_1116 | 来源:发表于2022-01-17 16:48 被阅读0次

    0 sed语法介绍

    1. 数据的搜寻并替换
    sed 's/要被取代的字串/新的字串/g'
    

    1 测试文件准备

    test.txt
    测试文件:

    # cat test.txt
    1234567869
    1234567869
    1234567869
    1234567869
    

    2 删除所有行的前N个字符

    sed 's/.\{N\}//' test.txt

    1. 删除所有行的前两个字符
    # sed 's/..//' test.txt
    34567869
    34567869
    34567869
    34567869
    
    1. 删除所有行的前三个字符
    # sed 's/...//' test.txt
    4567869
    4567869
    4567869
    4567869
    

    或者

    # sed 's/.\{3\}//' test.txt
    4567869
    4567869
    4567869
    4567869
    

    3 删除所有行的后N个字符

    sed 's/.\{N\}$//' test.txt

    1. 删除所有行的最后一个字符
    # sed 's/.$//' test.txt
    123456786
    123456786
    123456786
    123456786
    
    1. 删除所有行的最后2个字符
    # sed 's/..$//' test.txt
    12345678
    12345678
    12345678
    12345678
    

    # sed 's/.\{2\}$//' test.txt
    12345678
    12345678
    12345678
    12345678
    

    4 删除指定字符串及其以前的N个字符

    sed 's/.\{N\}str_to_match//' test.txt

    1. 删除6及其以前的一个字符
      第一个匹配的字符或字符串生效。
    # sed 's/.6//' test.txt
    12347869
    12347869
    12347869
    12347869
    
    1. 删除6及其以前的2个字符
      第一个匹配的字符或字符串生效。
    # sed 's/..6//' test.txt
    1237869
    1237869
    1237869
    1237869
    

    # sed 's/.\{2\}6//' test.txt
    1237869
    1237869
    1237869
    1237869
    
    1. 删除6及其以前的所有字符
      从后向前,第一个匹配的字符或字符串生效。
      sed 's/^.*str_to_match//' test.txt
    # sed 's/^.*6//' test.txt
    9
    9
    9
    9
    

    # sed 's/.*6//' test.txt
    9
    9
    9
    9
    

    4 删除指定字符串及其以后的N个字符

    sed 's/str_to_match.\{N\}//' test.txt

    1. 删除6及其以后的1个字符
      从前往后,第一个匹配的字符串生效。
    # sed 's/6.//' test.txt
    12345869
    12345869
    12345869
    12345869
    
    1. 删除6及其以后的3个字符
    # sed 's/6...//' test.txt
    123459
    123459
    123459
    123459
    

    # sed 's/6.\{3\}//' test.txt
    123459
    123459
    123459
    123459
    
    1. 删除6及其以后的所有字符
      sed 's/str_to_match.*//' test.txt
      从前向后,第一个匹配的字符或字符串生效。
    # sed 's/6.*//' test.txt
    12345
    12345
    12345
    12345
    

    参考

    sed --help

    相关文章

      网友评论

          本文标题:sed常用文本操作-文本替换

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