zoukankan      html  css  js  c++  java
  • 测试常用linux命令之sed篇

    一、sed命令

    可以放在单独的脚本文件中执行:sed -f script1 data1

    多条命令也可以用{}括起来

    sed可以进行文本的替换,删除,行添加,打印等。采用

    sed [address]{command1

    command2} 文件名的形式

    其中adress可以有两种形式:1)行的数字范围。2)用文本模式来过滤出某行。

     文本替换:sed '2,$s/dog/cat/g' a.txt    通过模式查找: sed '/hello/s/dog/cat'

    行删除: sed '3d' a.txt    sed '/number/d' a.txt

    插入和附件文本:sed '5i ew line' a.txt    sed '3o ew line' a.txt

    注意这些修改都是基于流的,如果想要在源文件上修改,需要加上-i选项。

    打印: sed -n '3,5p'    基于文本匹配的 sed -n '/pattern/p'

    sed的一些高级知识

    n;提取文本的下一行,代表从文件流的下一个文本行进行处理

    N;代表将下一行加到已经在模式空间的文本上

    自己使用的一直是sed命令的模式空间,其实它还有一个保持空间

    h:将模式空间复制到保持空间

    H:将模式空间附加到保持空间

    g:将保持空间复制到模式空间

    G:将保持空间附件到模式空间

    x:交换模式空间和保持空间的内容

    相当于将一部分后面需要的内容先保存,最后再用g,G命令将数据从保持空间复原到模式空间。

    其他:!代表符合特定模式的不怎么怎么着。。。

      

    三、具体案例

    #!/bin/sh
    #该脚本用来实现统计一个目录下所有的文件个数
    
    all_count=0
    for filePath in `echo $PATH | sed 's/:/ /g'`
    do
        count=`ls $filePath | wc -l`
        echo "$filePath":"$count"
        all_count=$[$all_count+$count]
    done
    echo "all_count:"$all_count
    统计路径下的文件个数
    sed -i '/^$/d' a.txt
    利用sed去除空行
    cat a.txt | sed 'N;s/
    / /g'
    利用sed实现多行合并
     cat a.txt | sed '/line2/{N;s/
    / /g}'
    利用sed实现特定行的合并
    之前自己一直采用的cat -n的方式,这种方法自然可以,只不过行号的格式往往不是想要的
    sed '=' a.txt | sed 'N;s/
    /	/g'
    利用sed为行添加行号
    sed -i 's/^ //g' a.txt
    利用sed去除段前的空格
    cat a.txt | sed '/./,/^$/!d'
    利用sed将多个空白行合并为一个
     cat a.txt | sed '/./,/$/!d'   
    (从有文字的行到最后一行,都不删除)
    利用sed删除开头的空白行
    cat a.txt | sed 's/<[^>]*>//g' 
    需要忽略任何嵌入原始标签的大于号
    利用sed去除html标签
  • 相关阅读:
    将自己写的经常复用的类封装成dll/lib的方法
    Mat 和 CvMat,IplImage相互转化
    制作VB安装程序问答(Package & Deployment)
    NTDDI_VERSION,_WIN32_WINNT,WINVER,_WIN32_IE定义宏的含义
    解决"cvCreateVideoWriter保存视频帧压缩格式只能用1"的问题
    100条道理,看完后请留下你的感言
    世界上最著名的24幅奇图
    字节对齐
    齐次坐标的理解
    在OpenCV中自适应确定canny算法的分割门限
  • 原文地址:https://www.cnblogs.com/bobodeboke/p/3741859.html
Copyright © 2011-2022 走看看