• linux基本命令续(杂糅和转)


    此处使用CP 命令复制/etc/profile和/etc/init.d/network到家目录下,当然也可以指定其他目录如./ 根目录等。

    在2提示处,如果输错了文字,可以ctrl+backspace键来删除,登录linux服务器版(类似dos界面)时,如果输错用户名或密码

    也可以用ctrl+backspace键来删除,并重新输入。

    grep

    基本格式:grep expression

         1.主要参数

        [options]主要参数:
        -c:只输出匹配行的计数。
        -i:不区分大小写
        -h:查询多文件时不显示文件名。
        -l:查询多文件时只输出包含匹配字符的文件名。
        -n:显示匹配行及行号。
        -s:不显示不存在或无匹配文本的错误信息。
        -v:显示不包含匹配文本的所有行。

        pattern正则表达式主要参数:
        : 忽略正则表达式中特殊字符的原有含义。
        ^:匹配正则表达式的开始行。
        $: 匹配正则表达式的结束行。
        <:从匹配正则表达 式的行开始。
        >:到匹配正则表达式的行结束。
        [ ]:单个字符,如[A]即A符合要求 。
        [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
        .:所有的单个字符。
        * :有字符,长度可以为0。

        2.示例  

        (1)grep a d  #显示d文件中包含 test的行
        (2)grep -r magic /usr/src  #显示/usr/src目录下的文件(包含子目录)包含magic的行

    作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的。

    首先谈一下grep命令的常用格式为:grep  [选项]  ”模式“  [文件]

    grep家族总共有三个:grep,egrep,fgrep。

    常用选项:

      -E :开启扩展(Extend)的正则表达式。

      -i :忽略大小写(ignore case)。

      -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

      -n :显示行号

      -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

      -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

      -o :只显示被模式匹配到的字符串。

      --color :将匹配到的内容以颜色高亮显示。

      -A  n:显示匹配到的字符串所在的行及其后n行,after

      -B  n:显示匹配到的字符串所在的行及其前n行,before

      -C  n:显示匹配到的字符串所在的行及其前后各n行,context

    作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的。

    首先谈一下grep命令的常用格式为:grep  [选项]  ”模式“  [文件]

    grep家族总共有三个:grep,egrep,fgrep。

    常用选项:

      -E :开启扩展(Extend)的正则表达式。

      -i :忽略大小写(ignore case)。

      -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

      -n :显示行号

      -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

      -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

      -o :只显示被模式匹配到的字符串。

      --color :将匹配到的内容以颜色高亮显示。

      -A  n:显示匹配到的字符串所在的行及其后n行,after

      -B  n:显示匹配到的字符串所在的行及其前n行,before

      -C  n:显示匹配到的字符串所在的行及其前后各n行,context

    模式部分:

      1、直接输入要匹配的字符串,这个可以用fgrep(fast grep)代替来提高查找速度,比如我要匹配一下hello.c文件中printf的个数:fgrep  -c  "printf"  hello.c

      2、使用基本正则表达式,下面谈关于基本正则表达式的使用:

        匹配字符:

          . :任意一个字符。

          [abc] :表示匹配一个字符,这个字符必须是abc中的一个。

          [a-zA-Z] :表示匹配一个字符,这个字符必须是a-z或A-Z这52个字母中的一个。

          [^123] :匹配一个字符,这个字符是除了1、2、3以外的所有字符。

          对于一些常用的字符集,系统做了定义:

          [A-Za-z] 等价于 [[:alpha:]]

          [0-9] 等价于 [[:digit:]]

          [A-Za-z0-9] 等价于 [[:alnum:]]

          tab,space 等空白字符 [[:space:]]

          [A-Z] 等价于 [[:upper:]]

          [a-z] 等价于 [[:lower:]]

          标点符号 [[:punct:]]

     匹配次数:

          {m,n} :匹配其前面出现的字符至少m次,至多n次。
          ? :匹配其前面出现的内容0次或1次,等价于{0,1}。
          * :匹配其前面出现的内容任意次,等价于{0,},所以 ".*" 表述任意字符任意次,即无论什么内容全部匹配。

    位置锚定:

          ^ :锚定行首

          $ :锚定行尾。技巧:"^$"用于匹配空白行。

          或<:锚定单词的词首。如"like"不会匹配alike,但是会匹配liker

          或>:锚定单词的词尾。如"like"不会匹配alike和liker,只会匹配like

          B :与作用相反。

     分组及引用:

          (string) :将string作为一个整体方便后面引用

            1 :引用第1个左括号及其对应的右括号所匹配的内容。

            2 :引用第2个左括号及其对应的右括号所匹配的内容。

             :引用第n个左括号及其对应的右括号所匹配的内容。

     3、扩展的(Extend)正则表达式(注意要使用扩展的正则表达式要加-E选项,或者直接使用egrep):

        匹配字符:这部分和基本正则表达式一样

        匹配次数

          * :和基本正则表达式一样

          ? :基本正则表达式是?,二这里没有。

          {m,n} :相比基本正则表达式也是没有了。

          + :匹配其前面的字符至少一次,相当于{1,}。

        位置锚定:和基本正则表达式一样。

        分组及引用

          (string) :相比基本正则表达式也是没有了。

            1 :引用部分和基本正则表达式一样。

             :引用部分和基本正则表达式一样。

        或者

          a|b :匹配a或b,注意a是指 | 的左边的整体,b也同理。比如 C|cat 表示的是 C或cat,而不是Cat或cat,如果要表示Cat或cat,则应该写为 (C|c)at 。记住(string)除了用于引用还用于分组。

         

    注1:默认情况下,正则表达式的匹配工作在贪婪模式下,也就是说它会尽可能长地去匹配,比如某一行有字符串 abacb,如果搜索内容为 "a.*b" 那么会直接匹配 abacb这个串,而不会只匹配ab或acb。

    注2:所有的正则字符,如 [ 、* 、( 等,若要搜索 * ,而不是想把 * 解释为重复先前字符任意次,可以使用 * 来转义。

    下面用一个练习来结束本次grep的学习:

    在网络配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33 中检索出所有的 IP

    1、检索出 0-255的范围

    2、由0-255的数字组合成IP

    3、简化

     

    grep默认是与上述截图黑色的部分结合,红色的是扩展用的。

    扩展使用时用grep -E 扩展 或者 grep 扩展

    grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

    grep常用用法

    复制代码
    [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
    选项与参数:
    -a :将 binary 文件以 text 文件的方式搜寻数据
    -c :计算找到 '搜寻字符串' 的次数
    -i :忽略大小写的不同,所以大小写视为相同
    -n :顺便输出行号
    -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
    --color=auto :可以将找到的关键词部分加上颜色的显示喔!
    复制代码

    1、将filename中包含w的行输出来

    [root@zhoucentos log]# grep w filename 
    wo ai wo jia
    wo hen hao
    da jia hao wo shi yi ge hao ren

     2、把行号显示出来

    [root@zhoucentos log]# grep -n w filename 
    1:wo ai wo jia
    3:wo hen hao
    4:da jia hao wo shi yi ge hao ren

    3、有多少行含有匹配的模式

    [root@zhoucentos log]# grep -c wo filename 
    3

    4、与正则表达式结合

    字符类的搜索:搜寻 test 或 taste 这两个单字, [] 里面不论有几个字节,他都谨代表某『一个』字节

    [root@zhoucentos log]# grep t[ae]st filename 
    test is meng
    tast is huan

    反向搜索--    字符类的反向选择 [^] :如果想要搜索到有 oo 的行,但不想要 oo 前面有 g,如下

    [root@zhoucentos log]# grep -n '[^g]oo' filename 
    8:root is a super

     行首与行尾字节 ^ $

    注意:

    ^ 符号,在字符类符号(括号[])之内与之外是不同的! 在 [] 内代表『反向选择』,在 [] 之外则代表定位在行首的意义!

    只要行首是wo的行

    [root@zhoucentos log]# grep -n ^wo filename 
    1:wo ai wo jia
    3:wo hen hao

    找出空白行----只有行首跟行尾 (^$)

    [root@zhoucentos log]# grep -n '^$' filename 
    6:
    9:
    10:

    任意一个字节 . 与重复字节 *
    这两个符号在正则表达式的意义如下:

    . (小数点):代表『一定有一个任意字节』的意思;
    * (星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态

    [root@zhoucentos log]# grep -n 'g..d' filename 
    8:good is a gread

     

     

     

  • 相关阅读:
    实现高效易用的java操作mysql包装
    部分NLuke版本源码更新(2009111)
    ASP.NET Forms验证的安全性问题研究——为什么加密代码需要配置为服务
    VirtualBox 虚拟机 Debian系统上安装Cassandra步骤及遇到的问题
    mysql master/slave 使用感受
    一个不必要的设计
    应对服务器端访问限制的一些办法(Cookie,Session,IP等)
    qq四国军旗2.1 beat03 builde017记牌器开发思路(一)
    MVC与WebForm最大的区别
    dell笔记本的Broadcom 802.11b/g 无线网卡ubuntu 9.10下安装
  • 原文地址:https://www.cnblogs.com/Li-JT/p/11269189.html
Copyright © 2020-2023  润新知