zoukankan      html  css  js  c++  java
  • Linux中sed基础

    sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

    sed命令常用参数

    常用命令

    函数命令 说明
    1,n 需要操作的行,第一行至第N行
    s search 查找替换,这个命令使用最多
    a append 添加
    i insert 插入
    c 替换
    d 删除行
    p 打印

    还有两个最重要的参数
    -n 使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
    -i 直接替换原文件,不加-i都不会修改原文件,只是输出或者放置内存中。

    sed常用命令的使用

    cat test.txt
    111
    222
    333
    444
    555
    666
    777
    打印第三行至第五行
    sed -n '3,5p' test.txt
    333
    444
    555
    删除第三至第五行
    sed  '3,5d' test.txt
    111
    222
    666
    777
    删除第三至第五行并修改原文件
    sed -i '3,5d' test.txt
    cat test.txt
    111
    222
    666
    777
    第二行之前添加qqq
    sed '2i qqq' test.txt
    111
    qqq
    222
    333
    444
    555
    666
    777
    第二行之后添加qqq
    sed '2a qqq' test.txt
    111
    222
    qqq
    333
    444
    555
    666
    777
    第二行替换为qqq
    sed '2c qqq' test.txt
    111
    qqq
    333
    444
    555
    666
    777
    

    sed最重要的s命令,查找替换

    sed "s/查找/替换/g" g表示一行全部替换,默认一行只替换第一个

    cat test.txt
    111
    222
    111
    444
    555
    sed "s/1/php/" test.txt
    php11
    222
    php11
    444
    555
    sed "s/1/php/g" test.txt
    phpphpphp
    222
    phpphpphp
    444
    555
    

    跟正则相似。^表示每一行开始,$表示每一行结束。正则匹配是遵循规范的。

    每一行开始加//
    sed "s/^////g" test.txt
    //111
    //222
    //111
    //444
    //555
    每一行行尾加;
    sed "s/$/;/g" test.txt
    111;
    222;
    111;
    444;
    555;
    

    替换满足条件某一个字符

    替换每一行的第二匹配字符1,替换成+
    sed "s/1/+/2" test.txt
    1+1
    222
    1+1
    444
    555
    

    多个匹配替换用;隔开

    把2替换成+,把4替换成-
    sed "s/2/+/g;s/4/-/g" test.txt
    111
    +++
    111
    ---
    555
    

    圆括号子集,在替换结果里面使用1 2

    cat test.txt
    1hello1
    222
    111
    444
    555
    sed "s/1(.*)1/wo1/g" test.txt
    wohello
    222
    wo1
    444
    555
    

    常用的项目文件替换

    把当前项目中所有文件中的111替换成helloworld
    sed -i "s/111/helloworld/g" `grep -rl . *`
    
  • 相关阅读:
    leetcode笔记--7 Find the Difference
    数据挖掘:概念与技术--笔记1--度量数据的相似性与相异性
    leetcode笔记--6 Add Digits
    leetcode 笔记5 single number
    数据挖掘导论笔记2 数据集的类型
    **leetcode笔记--4 Sum of Two Integers
    vs2015-Cordova开发安卓应用环境搭建
    c#一些常用的方法集合
    c#根据ip获取城市地址
    asp.net mvc 无刷新加载
  • 原文地址:https://www.cnblogs.com/feixiangmanon/p/12043757.html
Copyright © 2011-2022 走看看