正则表达式

1.grep (查找字符串)
    格式:grep [-acinv] '搜索字符串' filename
        -a:在二进制文件中,以文本文件的方式搜索数据
        -c:计算找到‘搜索字符串’的次数
        -i:忽略大小写的不同
        -n:输出行号
        -v:反向搜索,即显示出没有‘搜索字符串’内容的那一行
1.1搜索特点字符
   eg: grep 'root' /var/log/secure
1.2利用[]来搜索集合字符
    eg: grep 't[ae]st' filename    搜索test或tast这两个单词的行
    eg:  grep  '[^g]oo' filename    搜索oo前面不是g的单词的行
    eg:  grep  '[^a-z]oo' filename    搜索oo前面不是英文小写的单词的行
1.3行首与行尾字符 ^ $
   eg:   grep  '^[a-z]' filename   搜索行首为小写英文的单词的行
   eg:   grep  '^[^a-z]' filename   搜索行首不是小写英文的单词
   
   eg:   grep  'a$' filename   搜索行尾为a的行
   eg:  grep  '^$'   filename  搜索文件中的空白行
1.4任意一个字符(.)与重复字符(*)
   eg: grep  'g..d' filename  搜索以g开头,d结尾4个单词的行
  
   eg:  grep  'ooo*'  filename   搜索至少两个o以上的字符串的行
1.5限定连续重复字符范围{}
  eg:    grep  'o\{2\}' filename  搜索包含2个o的行
      注意:{}需要用到转义符(\)
 
 
2.sed工具
  格式: sed [-nefr] [动作]
     -n :使用安静模式
     -e :直接在命令行模式上进行sed的操作
     -f :直接将sed的操作写在一个文件内,-f filename则可以执行filename内的sed操作。
     -r :sed的操作支持的是扩展正则表达式的语法
     操作说明: [n1[,n2]]function
           n1,n2 :不一定存在,一般代表“选择进行操作的行数”。
       function操作有:
           a :新增,a的后面可以接字符串,而这些字符串会在新的一行出现(当前的下一行)
           c :替换 ,c的后面可以接字符串,
           d : 删除,后面通常不接字符串
           i :插入,i的后面可以接字符串,而这些字符串会在新的一行出现(当前的上一行)
           p :打印,通常与参数-n一起运行
           s : 搜索,还可以替换,例如: 1,20s/old/new/g
2.1  
  eg: nl /etc/passwd | sed '2,5d'
  显示/etc/passwd的内容,并且需要打印行号,同时请将第2-5行删除
   eg:  nl /etc/passwd | sed '3,$d'
  显示/etc/passwd的内容,并且需要打印行号,同时请将第3到最后一行删除
   eg: nl /etc/passwd | sed '2a drink tea'
    在第二行后加上“drink tea”字样
   eg:nl /etc/passwd | sed '2,5c No 2-5 number'
      将2-5行的内容替换成“No 2-5 number”。
   eg: nl /etc/passwd | sed -n '5,7p'
   仅显示5-7行
  
   eg:ifconfig eth0 | grep 'inet ' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
       只显示ip地址,不显示其他东西
 
3.awk工具
    与sed常常用作于整行处理相比,awk比较倾向于一行中分成数个“字段”来处理。
  格式: awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
  awk的内置变量:
     NF:每一行拥有的字段总数
     NR:当前awk所处理的是“第几行”数据
     FS:当前的分隔符,默认空格键
3.1
   eg:  last | awk '{print $1 "\t" $3}'
    取出每一行的第一栏和第三栏。(其中$0表示整行)
3.2
   eg: last | awk '{print $1 "\t lines: " NR "\t columes: " NF}'
     列出每行的第一栏,并显示行号和字段总数(即栏数)
3.3
   eg:  cat /etc/passwd | awk '{FS=":"} $3<10{print $1 "\t" $3}'
     分隔符用“:”,列出第一栏和第三栏并且第三栏的数据要大于10.

eg:cat /etc/passwd | awk 'BEGIN {FS=":"}{print $1}'  查看存在的用户  
       
cat /etc/passwd | sed 's/:.*$//g'  

3.4
  eg:有一个文件pay.txt。内容如下:
      Name  1st  2nd  3th
      xb    2300 3400 3450
      bobo  5400 4300 2300
      ......
  想计算出每个人的总额,并格式化输出。输出结果如下:
      Name  1st  2nd  3th   total
      xb    2300 3400 3450  9150
      bobo  5400 4300 2300  12000
      ......
 
   命令为:  cat pay.txt | awk 'NR==1{printf “%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"total"} NR>=2{total=$2+$3+$4  printf "%10s %10d %10d %10d %10d\n",$1,$2,$3,$4,total}'
   
4.文件比较
4.1 diff  (行为单位比较)
  格式:diff [-bBi] from-file to-file
      参数:
           -b :忽略一行中有多个空白的差异(例如:“about me"与”about    me")视为相同
           -B : 忽略空白行的不同
           -i :忽略大小写的不同
   eg:diff /tmp/test/passwd /etc/passwd   
    文件的比较
   eg: diff /etc  /tmp/test 
   目录的比较
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值