• cut和grep 选取命令


    cut命令

    cut:将一段信息的某一段”切“出来,处理的信息是以行为单位。
    参数:

    • -d ;后接分隔字符,与-f一起使用;
    • -f :依据-d的分隔字符将一段信息切割成为数段,用-f取出第几段的意思;

    举例:


    以“:”作为分隔,列出第5列

    # echo $PATH | cut -d':' -f 5

    以“:”作为分隔,列出第3与第5列

    # echo $PATH | cut -d':' -f 3,5
    /usr/java/jdk/bin:/usr/lib64/qt-3.3/bin

    cut缺点:在处理多空格相连的数据时,可能会比较吃力一点。

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

    grep命令

    grep:分析一行信息,若其中有匹配的关键字信息,就将该行拿出来。

    语法:grep [parameter] [--color=auto] '查找字符串' filename
    参数:

    • -c:计算找到'查找字符串'所在行的的总数
    • -i:忽略大小写的不同
    • -n:顺便输出行号
    • -v:反向选择,即显示没有'查找字符串'内容的那些行
    • --color:可以将找到的关键字部分加颜色显示

    ps:如果参数--color=auto不是默认值,每回都需要自行加上这样就很麻烦,此时使用alias命令处理后,可以每次执行grep都会自动帮你加上颜色显示。
    步骤:
    1.在~/.bashrc内加入一行【alias grep='grep --color=auto'】
    2.source ~/.bashrc 让配置文件生效即可

    grep的一些高级参数

    用法:grep [-A] [-B] --color=auot '搜索字符串' filename
    参数:

    • -A:后面可加数字,为after的意思,除了列出该行外,后续的n行也列出来
    • -B:后面可加数字,为before的意思,除了列出改行外,前面的n行也列出来

    举例:

    grep与基础正则表达式的使用

     1 --1)查找特定字符串--
     2 获取查找字符串的前几行或后几行
     3 # dmesg | grep -A3 -B1 -color=auto 'ech'
     4 tg3 0000:1b:00.1: eth1: Flow control is off for TX and off for RX
     5 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
     6 All bugs added by David S. Miller <davem@redhat.com>
     7 8021q: adding VLAN 0 to HW filter on device eth4
     8 Bridge firewalling registered
     9 
    10 查找特定字符串
    11 # grep -n 'word' log.txt
    12 
    13 查找不包括特定字符串的内容
    14 # grep -v 'word' log.txt
    15 
    16 --(2)利用中括号[]来查找集合字符--
    17 查找字符串test或tast
    18 # grep 't[ae]st' log.txt
    19 
    20 查找字符串'ii'前不带字符A的(使用反向选择[^]来完成)
    21 # grep '[^A]ii' log.txt
    22 
    23 查找字符串'ii'前没有小写字符的
    24 # grep '[^a-z]ii' log.txt
    25 
    26 查找有数字的哪些行
    27 # grep '[0-9]' log.txt
    28 
    29 --3)行首与行尾字符^$--
    30 查找以字符串'hello'开头的行
    31 # grep '^hello' log.txt
    32 
    33 查询以大写字符开头的行(会列出包含该字符的一整个字)
    34 # grep '^[A-Z]' log.txt
    35 
    36 查找不要开头是英文字母的行
    37 # grep '^[^a-zA-Z]' log.txt
    38 注意:^符合在字符集合符合(中括号[])之内与之外是不同的,在[]内代表反向选择,在[]之外则代表定位在行首的意义。
    39 
    40 查询行尾结束为小数点(.)的那一行
    41 # grep '.$' log.txt
    42 注:因为小数点具有其他意义,所有必须用转义字符()来加以解除其特殊意义。
    43 
    44 查找空白行(只有行首和行尾)
    45 # grep -n '^$' log.txt
    46 
    47 查找没有空白行与#开头的行
    48 # grep -v '^$' log.txt | grep -v '^#'
    49 
    50 --(4)任意一个字符.与重复字符*--
    51 注:这两个符合在正则表达式中的意义如下:
    52 --.(小数点):代表一定有一个任意字符的意思
    53 --*(星号):代表重复前一个0到无穷多次的意思,为组合形态
    54 
    55 查找字符串iXXa,即共四个字符,其中XX表示随便的意思
    56 # grep -n 'i..a' log.txt
    57 
    58 查找至少含有两个ii以上的字符串,需要使用iii*
    59 # grep -n 'iii*' log.txt
    60 注:"i*"代表空字符或一个i以上的字符(空字符表示没有字符也可以的意思),所有将会输出所有的数据到屏幕上;同理,"ii*",则第一个i一定会存在,但第二个i则是可有可无的多个i,所有凡是含义i,ii,iii等,都会被列出来。
    61 
    62 查找以字符g开头与g结尾的字符串,中间任意字符都可以(".*" 代表0个或多个任意字符的意思)
    63 # grep -n 'g.*g' log.txt
    64 
    65 --(5)限制连续字符范围{}--
    66 注意:因为{与}在shell中是有特殊含义的,因此,我们必须要是使用转义字符来让它时区特殊意义才行。{n,m}:连续n到m个的前一个字符
    67 
    68 查找两个i的字符串
    69 # grep -n 'i{2}' log.txt
    70 
    71 查找a后面接2个到5个i,后面在接一个a的字符串
    72 # grep -n 'a{2,5}a' log.txt
    73 
    74 查找a后面接2个以上i,后面在接一个a的字符串
    75 # grep -n 'a{2,}a' log.txt
    76 
    77 查找以a开头的文件(这里需要与通配符【ls -l a*】以a开头的任何文件名的文件区别开来)
    78 # ls | grep -n '^a.*'

  • 相关阅读:
    容器小结
    STL之Map和multimap容器
    STL之Set和multiset容器
    STL之优先级队列priority_queue
    STL之List容器
    STL之Queue容器
    STL之stack容器
    应用安全-提权/降权相关整理
    安卓监听工具整理
    Linux命令整理-Kali
  • 原文地址:https://www.cnblogs.com/xiaojiaocx/p/6423531.html
Copyright © 2020-2023  润新知