zoukankan      html  css  js  c++  java
  • SHELL用法七(Sed语句)

    1、SHELL编程Sed语句案例实战

    1)SHELL编程四剑客之二的Sed工具,主要是用于Linux系统文本文件的编辑、
    打印的,也称为非交互模式编辑器(vi|vim交互模式编辑器),Sed工具的语法
    格式:
    sed -option(参数) ‘Command’(命令) file(文件对象)
     Option参数:-i(修改)、-n(静默模式)、-e(扩展)、-l、-b、-c;
     Command命令:p(打印)、d(删除)、N(多行)、G、D;
    2)SHELL编程四剑客Sed工具案例操作一,基于Sed工具将list.txt文件中的用户
    名root改为jfedu,命令如下:
    sed s/jfedu/root/g list.txt
    sed 's#jfedu#root#g' list.txt
    sed -i 's#jfedu#root#g' list.txt
    sed -e '3s/2/100/g' -e '4s/3/100/g' list.txt
    sed '3s/2/100/g;4s/3/100/g' list.txt
    sed '3,$s/11/100/g' list.txt3)替换jfedu.txt文本中old为new:
    sed
    's/old/new/g'
    jfedu.txt
    4)打印jfedu.txt文本第一行至第三行:
    sed    -n '1,3p'      jfedu.txt
    5)打印jfedu.txt文本中第一行与最后一行:
    sed   -n '1p;$p'     jfedu.txt
    6)删除jfedu.txt第一行至第三行、删除匹配行至最后一行:
    sed       '1,3d'     jfedu.txt
    sed     '/jfedu/,$d'   jfedu.txt
    7)删除jfedu.txt最后6行及删除最后一行:
    for
    i in `seq 1 6`;do sed -i
    '$d' jfedu.txt ;done
    sed    '$d'  jfedu.txt
    8)删除jfedu.txt最后1行:
    sed   '$d'   jfedu.txt
    9)在jfedu.txt查找jfedu所在行,并在其下一行添加word字符,a表示在其下一
    行添加字符串:
    sed   '/jfedu/aword'    jfedu.txt
    10)在jfedu.txt查找jfedu所在行,并在其上一行添加word字符,i表示在其上
    一行添加字符串:
    sed     '/jfedu/iword'    jfedu.txt
    11)在jfedu.txt查找以test结尾的行尾添加字符串word,$表示结尾标识,&在
    Sed中表示添加:
    sed    's/test$/&word/g'    jfedu.txt
    12)在jfedu.txt查找www的行,在其行首添加字符串word,^表示起始标识,
    &在Sed中表示添加:
    sed     '/www/s/^/&word/'     jfedu.txt
    13)多个sed命令组合,使用-e参数:
    sed -e '/www.jd.com/s/^/&1./' -e 's/www.jd.com$/&./g'   jfedu.txt
    14)多个sed命令组合,使用分号“;”分割:
    sed -e '/www.jd.com/s/^/&1./;s/www.jd.com$/&./g' jfedu.txt
    15)Sed读取系统变量,变量替换:
    WEBSITE=WWW.JFEDU.NET
    Sed “s/www.jd.com/$WEBSITE/g” jfedu.txt
    16)修改Selinux策略enforcing为disabled,查找/SELINUX/行,然后将其行
    enforcing值改成disabled、!s表示不包括SELINUX行:
    sed -i     '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
    sed -i    '/SELINUX/!s/enforcing/disabled/g' /etc/selinux/config
    17)合并上下两行,也即两行合并:
    sed     'N;s/
    / /'     jfedu.txt
    18)打印list.txt文件的行号,命令操作如下:
    for i in `seq 1 $(cat list.txt |wc -l)`;do sed -n "${i}s/^/&$i) /p" list.txt ;done
    sed = list.txt |sed 'N;s/
    /) /g'
    2、SHELL编程Grep语句案例实战
    1)Find是Linux操作系统文件和目录的路径检索、查询工具,而Grep是Linux
    系统下文本文件内容检索或者匹配工具,Grep称为全局正则表达式检索工具,
    在企业中被广泛的采用。
    2)Grep工具的语法格式:grep -option(参数) ‘word’(关键词) file
    (文本文件);
     Option参数:-a(文本方式)、-c(统计)、-i(忽略大小写)、-n(行号)、
    -v(反选)、-o(仅匹配)、-w(词组)、-A(匹配之后)、-B(匹配之
    前)、-C(匹配前后);3)Grep企业案例实战一,查找/etc/passwd文件中是否存在www用户信息,
    命令操作如下:
    grep root /etc/passwd
    grep "root" /etc/passwd
    grep -w "^root" /etc/passwd
    grep -i "root" /etc/passwd
    4)Grep企业案例实战二,ifconfig看到网卡信息,只查看IP地址所在行信息,
    命令操作如下:
    ifconfig|grep netmask
    ifconfig|grep -w inet
    ifconfig|grep -w 255
    ifconfig|grep -E "172|127"
    ifconfig|grep -E "([0-9]{1,3}.){3}[0-9]{1,3}"
    #创建三个文件,并且往文件中分别写入不同的代码;
    for i in `seq 1 3`;do touch jf$i.txt;echo jfedu jf$i >jf$i.txt;echo cat
    jf$i.txt;cat jf$i.txt;echo ----------;done
    5)通配符类型详解:*
    0个或者多个字符、数字;
    ?
    匹配任意一个字符;
    #
    表示注解;
    |
    管道符号;
    ;
    多个命令连续执行;
    &
    后台运行指令;
    !
    逻辑运算非;
    [ ]
    内容范围,匹配括号中内容;
    { }
    命令块,多个命令匹配。
    6)正则表达式详解:
    *
    前一个字符匹配0次或多次;
    .
    匹配除了换行符以外任意一个字符;
    .*
    代表任意字符;
    ^
    匹配行首,即以某个字符开头;
    $
    匹配行尾,即以某个字符结尾;
    (..)
    标记匹配字符;
    []
    匹配中括号里的任意指定字符,但只匹配一个字符;
    [^]
    匹配除中括号以外的任意一个字符;
    
    转义符,取消特殊含义;
    <
    锚定单词的开始;
    >
    锚定单词的结束;
    {n}
    匹配字符出现n次;{n,}
    匹配字符出现大于等于n次;
    {n,m}
    匹配字符至少出现n次,最多出现m次;
    w
    匹配文字和数字字符,不匹配符号;
    W
    w的反置形式,匹配一个或多个非单词字符,匹配
    符号;
    
    单词锁定符;
    s
    匹配任何空白字符;
    d
    匹配一个数字字符,等价于[0-9]。
    7)常用GREP工具企业演练案列:
    grep -c "test"
    jfedu.txt 统计test字符总行数;
    grep -i "TEST"
    jfedu.txt 不区分大小写查找TEST所有的行;
    grep -n "test"
    jfedu.txt 打印test的行及行号;
    grep -v "test"
    jfedu.txt 不打印test的行;
    grep "test[53]"
    jfedu.txt 以字符test开头,接5或者3的行;
    grep "^[^test]"
    jfedu.txt 显示输出行首不是test的行;
    grep "[Mm]ay"
    jfedu.txt
    匹配M或m开头的行;
    grep "K…D"
    jfedu.txt
    匹配K,三个任意字符,紧接D的行;
    grep "[A-Z][9]D"
    jfedu.txt
    匹配大写字母,紧跟9D的字符行;
    grep "T{2,}"
    jfedu.txt 打印字符T字符连续出现2次以上的行;
    grep "T{4,6}"
    jfedu.txt 打印字符T字符连续出现4次及6次的行;
    grep -n "^$"
    jfedu.txt
    打印空行的所在的行号;
    grep -vE "#|^$"
    jfedu.txt
    不匹配文件中的#和空行;grep
    --color -ra -E
    "db|config|sql" * 匹配包含db或者config或者
    sql的文件;
    grep
    --color -E "<([0-9]{1,3}.){3}([0-9]{1,3})>"
    jfedu.txt 匹配
    IPV4地址。
  • 相关阅读:
    Changing Icon File Of Push Button At Runtime In Oracle Forms 6i
    Set Font Properties On Mouse Hover Of Push Button And Text Items At Run time In Oracle Forms
    Change An Item Property Using Set_Item_Property In Oracle Forms
    Calling / Running a report in Oracle forms 10g / 11g
    Change Or Set Report Object Property At Run Time In Oracle Forms Using Set_Report_Object_Property Command
    Refresh / Updating a form screen in Oracle D2k Forms 6i
    Know How And When To Use System.Message_Level To Control Messages In Oracle Forms
    Perform Cut Copy Paste Operations Using Cut_Region Copy_Region Paste_Region Commands In Oracle Forms
    CHECKBOX_CHECKED built-in in Oracle D2k Forms
    Limiting To Select Only 5 Check Boxes Out Of Ten In Oracle Forms
  • 原文地址:https://www.cnblogs.com/nshgo/p/12157674.html
Copyright © 2011-2022 走看看