zoukankan      html  css  js  c++  java
  • 16 shell脚本--007三剑客之sed

    1、sed  (Stream SDite)

      作为行编辑器,对文本进行编辑(以行为单位进行编辑)

      注意:sed编辑文件,却不改变原文件;

      (1)sed的工作原理:

          指定一个文本文件,一次读取文本文件中每行的内容,读取到模式空间中的(PATTERN SPACE),在模式空间中进行文本匹配,(正则表达式)对匹配后的内容进行修改(替换、删出、打印、修改、保存等)

      (2)常见选项:

          -n  不显示默认输出的内容

          -r  指定使用扩展的正则表达式

            匹配IP

              1、所有的 都不要

              2、|  ----> 或者

          -e  script  

          -f    指定脚本文件

          -l    指定文本换行的长度?

          -i     直接修改文件内容(不建议使用)

      (3)地址定界

          1、直接匹配数值

            sed -n '5,7p' 文件   ?

          2、d(数字)~步长

            sed -n '1~3p'  文件

          3、$  指定行尾

            sed -n '10,$p' 文件

          4、/正则/

            /正则1/,/正则2/

            sed -n '/fd/,$p' 文件   //fd是文件某一行的内容

          5、0,addr

            addr可以为数字/$/正则表达式

            sed -n '0./k{5,}/p' 文件

          6、addr,+N

            匹配addr行到addr后N行

            sed -n '/fd/,+5p' 文件

          7、addr,-N

      (4)、常见命令

          p   print    打印(默认在屏幕上显示出来)建议和 -n 一起使用   

          c   替换行

             sed "/aaa/c A“  文件

          i  添加  在指定行的上一行添加内容

            sed -n "/for/i abc" 文件    在for的上一行添加abc

          a  添加  在指定行的下一行添加内容      

          d   删除

             sed ”1,3d“文件

             sed ”/aaa/d“  文件

          n N 读取/添加  模式匹配到的行的下一行内容,在对其进行操作

          w  保存

            sed "/pattern/w 新的文件名"  原来的文件名

          s   文本内容替换

              语法格式:s/pattern/字符串/

                   扩展:中间的 / 可以替换成任意一个字符,例如:s###  s@@@  s%%%

          g  全部匹配

            sed "s#k#K#gw /root/text.txt" 文件    //把全部小k替换成大K,然后保存到/root/text.txt

            /1 /2  和正则表达式的分组相同,实现相反应用

          &   调用前面匹配的内容

            sed "s/^bash.*/&er/g"  文件    //在以bash开头的行,后面加er

            

        dirname        //取目录名

        basename    //取文件名

    for
    for 变量 in 列表;do
    循环体
    done

    for((初始语句; 判断语句; 值变化语句)); do
    循环体
    done

    case
    分支
    case 变量 in
    PAT1)
    执行语句
    ;;
    PAT2)
    执行语句
    ;;
    *)
    默认执行语句
    ;;
    esac

    while
    循环
    格式:

    定义初始值
    while 条件判断 ; do
    循环体
    值变化语句
    done

    其他两种特殊的语句格式:
    for i in $(cat /etc/passwd &> /dev/null) 错误写法

    while read 变量;do
    循环体($变量)
    done << /path/filename

    就是任性 -- 要写死循环
    while true ; do
    循环体
    done

    break 跳出循环
    continue 跳出本次循环
    sleep 延长多长时间后,继续向下执行命令

    until
    循环
    与 while 用法想用
    区别:只有 判断条件为 False 的时候,才会进入循环语句;
    。。

    if
    if 条件判断 ;then
    执行语句
    fi

    if 条件判断 ;then
    执行语句1
    else
    执行语句2
    fi

    if 条件判断; then
    执行语句1
    elif 条件判断 ; then
    执行语句2
    elif 条件判断 ; then
    执行语句3
    else
    执行语句4
    fi

    ---------------------------------------------------------------------------

    if语句的写法:
    case语句的写法:

    read

    cpu
    cat /proc/cpuinfo
    mem
    free -m
    disk
    fdisk -l
    quit
    echo ""
    exit 0

  • 相关阅读:
    python的IDE(pycharm)安装以及简单配置
    python环境搭建(python2和python3共存)
    如何搭建samba服务?
    css 样式 文字过长 换行处理方法
    my97 日历控件
    myeclipse8.6 注册码
    (46) odoo核心文档分享
    (01-02) odoo8.0_Ubuntu14.04_nginx反代理设置
    (45) Manifest文件
    (44) odoo中的WebService
  • 原文地址:https://www.cnblogs.com/wx00/p/11362805.html
Copyright © 2011-2022 走看看