• linux中grep、awk、sed的使用


    grep的使用:
    一、grep一般格式:
           grep [选项] 基本正则表达式 [文件]
           这里的正则表达式可以为字符串。在grep命令中输入字符串参数时,最好将其用双引号括起来。调用变量时也可以使用双引号。在调用模式匹配时,应使用单引号。
     
    二、grep常用选项:
           -c   只输出匹配行的计数。
           -i   不区分大小写(只用于单字符)。
           -h   查询多文件时不显示文件名。
           -l   查询多文件时只输出包含匹配字符的文件名。
           -n   显示匹配行及行号。
           -s   不显示不存在或无匹配文本的错误信息。
           -v   显示不包含匹配文本的所有行。
     
    三、常用选项的使用:
    1、 查询多个文件:
       $grep  “hello” *.doc
       num.doc:hello
       sum.doc:hello world
      说明在num.doc 和sum.doc中有字符串“hello“。
     
    2、 行匹配:   
       $grep -c “123” *.doc
       num.doc:2
       sum.doc:2
       说明在num.doc 和sum.doc中有字符串“123“各为两行。
     
    3、 显示满足匹配模式的所有行数:
       $grep –n “123” *.doc
       num.doc:1:hao 123
       num.doc:2:hao 123
       sum.doc:2:hao 123
       sum.doc:4:hao 1234
     
    4、 显示所有不包含“123“的行:
       $grep  -v “123” *.doc
       num.doc:hello
       num.doc:world
       sum.doc:hello world
       sum.doc:sui yue
     
    5、 精确匹配:
       如第三点,匹配“123”时,结果返回了“1234”的其它字符串。
       $grep -n “123>” *.doc
       num.doc:1:hao 123
       num.doc:2:hao 123
       sum.doc:2:hao 123
       
    6、 大小写敏感:
       缺省情况下,grep是大小写敏感的,如果要查询大小写不敏感的字符串,必须
       使用-i选项。
       $grep -i “just” *.doc 
       num.doc:Just
       num.doc:just
       
    四、grep和正则表达式
    1、模式范围:
       $ grep  ‘48[34]’ mydata.doc
       此命令在mydata.doc中匹配字符串“483”和“484”。
    2、 不匹配行首:
       $ grep  ‘^[^48]’ mydata.doc
       此命令在mydata.doc中匹配除4或者8开头的行。
    3、 设置大小写:
       $ grep  ‘[Ss]ept’  mydata.doc
       此命令在mydata.doc中匹配字符串“Sept”和“sept”。
    4、匹配任意字符:
       $ grep  ‘a…z’ mydata.doc
       此命令在mydata.doc中匹配字符串以字符a开头和字符z结尾,中间为任意三个字符。
    5、 模式出现的机率
       $ grep ‘1{2,}’ mydata.doc
       此命令说明数字1至少出现两次
     

     

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

    awk的使用:
    一、awk的调用格式:
    awk的调用格式有三种:
    第一种是命令行的方式,如下:
    awk [-F field-separator] ‘commands’ input-file
    [-F]域分隔符,是可选的,awk使用空格作为缺省的域分隔符。
     
    第二种方法是将awk命令插入到一个文件,并使awk程序可以执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。
    第三种方法是将所有的awk命令插入一个单独文件,然后调用:
    awk –f awk-script-file input-file
     
    二、动作和模式
           任何awk语句都有模式和动作组成。模式部分决定动作语句何时触发及触发事件。
    模式包括两个特殊字段BEGIN和END.,BEGIN语句使用在任何文本浏览动作之前,之后文本浏览动作依据输入文件开始执行,END语句用来在awk完成文本浏览动作后打印输出文本中输出和结尾状态标志。实际动作在大括号内指明。
     
    三、域和记录
           awk执行时,其浏览域标记为$1,$2 ….$n.。这种方法称为域标识。
        1、保存awk输出
    第一种方法:
    $awk ‘{print $0}’ mydata.txt >newfile.txt
    显示屏上不会输出结果。
     
    第二种方法:
    $awk ‘{print $0}’ mydata.txt | tee newfile.txt
    输出到文件中,同时显示在显示器上。
     
    2、使用标准输入
    第一种方法:使用awk脚本输入文件格式
    $myawk.awk inputfile.txt
    第二种方法:使用重定向
    $myawk.awk < inputfile.txt
    第三种方法:使用管道
    $inputfile.txt | myawk.awk
     
    3、打印所有记录
    $awk ‘{print $0}’ myfile.txt
    由于没有模式部分,只有动作部分,动作必须用花括号括起来。
     
    Lisi 25 wuhan
    Wangjian 33 shanghai
    Caiming 55 shenzhen
    4、打印单独记录
    要用逗号分隔域
    $awk ‘{print $1,$2}’ myfile.txt
    Lisi 25
    Wangjian 33
    Caiming 55
     
    5、打印报告头
    $awk ‘BEGIN {print “Name Age ******************“} {print $1” ”$2}’ mfile.txt
     
    Name    Age
    ***************
    Lisi      25
    Wangjian 33
    Caiming 55
     
    6、打印信息尾
    $awk ‘BEGIN {print “Name  ****** “} {print $1 } END {“end of report ”}’ mfile.txt

     

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

     
    sed的使用:
    一、sed调用格式
    sed调用格式有三种:
    第一种命令行方式:
    sed [option] ‘command’ inputfile
    command要加单引号,也允许加双引号。
    第二种使用sed脚本文件:
    sed  [option]  –f  sed-script-file inputfile
    第三种使用第一行具有sed命令解释器的sed脚本文件:
    sed-script-file [option] inputfile
     
    二、sed选项:
    n 不打印:sed不写编辑行到标准输出,缺省为打印所有行。P命令可以用来打印编辑行。
    c 下一命令是编辑命令。使用多项编辑时加入选项。
    f 如果正在调用sed脚本文件,使用此选项。此选项通知sed脚本文件支持所有的sed命令。
     
    三、sed常规用法:
    1、 保存sed 输出
    $ sed  ‘command’ inputfile > outfile
     
    2、 sed在文件中查找文本的方式
    sed浏览文件时,默认从第一行开始,有两种方法定位文本:
    第一种:使用行号,可以用简单数字或是一个行号范围。
    第二种:使用正则表达式。
     
    Sed定位文本的一些方式,如下:
    x x表示行号。 
    x,y 表示行号范围从x到y。 
    /pattern/ 查找包含模式的行。 
    x,/pattern 通过行号和模式查询匹配行。 
    x,y! 查找不包含指定行号x到y的行。 


     
    3、 sed编辑命令
    p 打印匹配行 
    = 显示文件行号 
    a 在定位行号后附加拳文本信息 
    i 在定位行号后插入拳文本信息 
    d 删除定位行 
    c 用拳文本替换定位文本 
    s 使用替换模式替换相应模式 
    r 从另一个文件中读文本 
    w 写文本到一个文件 
    q 第一个模式匹配完成后推出或立即推出 
    l 显示与八进制ASCII代码造价的控制字符 
    {} 在定位行执行的命令组 
    n 从另一个文件中读文本下一行,并附加在下一行 
    g 将模式2粘贴到/pattern n/ 
    y 传送字符 
    n 延续到下一输入行;允许跨行的模式匹配语句。 


    4、 使用p显示行
    $sed  -n ‘2p’ myfile.txt
    Hello world!
    -n选项,显示打印定位行。
     
    5、 打印范围
    $sed  -n ‘1,3p’ myfile.txt
    Hao 123
    Hello world!
    Ni hao ma?
    打印1到3行。
     
    6、 打印模式
    $sed  -n ‘/123/’p myfile.txt
    Hao 123
    匹配
     
    7、 在指定行号匹配模式
    $sed  -n ‘5,/Hao/’p myfile.txt

  • 相关阅读:
    编程题#2: 魔兽世界之二:装备
    程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1
    【转】C++动态创建二维数组,二维数组指针
    HDU-2571命运
    HDU-1203 I NEED A OFFER!
    HDU-1003 Max Sum
    HDU2196-Computer
    HDU-1520 Anniversary party
    ChineseHelper(获取汉字字符串的首拼)
    车牌号正则表达式(新能源车牌)
  • 原文地址:https://www.cnblogs.com/liyichen/p/8615872.html
Copyright © 2020-2023  润新知