linux汇总整理-正则篇

正则表达式通配符

  • .:匹配任意的一个字符。
  • ?:匹配前面的子表达式,最多一次。
  • *:匹配前面的子表达式零次或多次。
  • +:匹配前面的子表达式一次或多次。
  • {N}:匹配前面的子表达式 N 次。
  • {N,}:匹配前面的子表达式 N 次到多次。
  • {N,M}:匹配前面的子表达式 N 到 M 次,至少 N 次至多 M 次。
  • -:只要不是在序列开始、结尾或者序列的结束点上,表示序列范围。
  • ^:匹配一行开始的空字符串;也表示字符不在要匹配的列表中。
  • $:匹配一行末尾的空字符串。
  • \b:匹配一个单词前后的空字符串。
  • \B:匹配一个单词中间的空字符串。
  • \<:匹配单词前面的空字符串。
  • \>:匹配单词后面的空字符串。
  • [:alnum:]:字母数字字符
  • [:alpha:]:字母字符
  • [:blank:]:空字符: 空格键符 和 制表符
  • [:digit:]:数字: ‘0 1 2 3 4 5 6 7 8 9’
  • [:lower:]:小写字母: ‘a b c d e f g h i j k l m n o p q r s t u v w x y z’
  • [:space:]:空格字符: 制表符、换行符、垂直制表符、换页符、回车符和空格键符
  • [:upper:]:大写字母: ‘A B C D E F G H I J K L M N O P Q R S T U V W X Y Z’

使用示例

  • 匹配所有大写字母:grep '[:upper:]' 文件名
  • 检测磁盘使用率:awk '{if(substr($4,length($4),length($4))=="%"){print $4} else {print $1}}' ni

去掉某html文件中的tags

  • 源html文件如下
<b>This</b> is what <span style="text-decoration: underline;">I</span> meant. Understand?
  • 使用sed命令处理
# 如果你这样搞的话,就会有问题
$ sed 's/<.*>//g' html.txt
Understand? 
# 要解决上面的那个问题,就得像下面这样。
# 其中的'[^>]' 指定了除了>的字符重复0次或多次。
$ sed 's/<[^>]*>//g' html.txt
This is what I meant. Understand?

合并行操作

  • 待处理文本如下:
      T 119.163.122.65:37018 -> 119.163.193.242:80 [AP]
      x-forwarded-for: 10.87.15.180
      T 119.163.193.242:80 -> 119.163.122.65:37018 [AP]
      T 119.163.122.65:36792 -> 119.163.193.242:80 [AP]
      x-forwarded-for: 10.86.180.87
      T 119.163.193.242:80 -> 119.163.122.65:36792 [AP]
      T 119.163.122.65:44387 -> 119.163.193.242:80 [AP]
      x-forwarded-for: 10.86.146.16
  • 希望处理成如下格式:
      T 119.163.122.65:37018 -> 119.163.193.242:80 [AP]    x-forwarded-for: 10.87.15.180
      T 119.163.193.242:80 -> 119.163.122.65:37018 [AP]
      T 119.163.122.65:36792 -> 119.163.193.242:80 [AP]    x-forwarded-for: 10.86.180.87
      T 119.163.193.242:80 -> 119.163.122.65:36792 [AP]
      T 119.163.122.65:44387 -> 119.163.193.242:80 [AP]    x-forwarded-for: 10.86.146.16
  • 脚本1:sed ':l N; s/\nx-forward/ x-forward/; $!tl' test.txt
  • 脚本2:sed ':l N; s/\nx-forward/ x-forward/; bl' test.txt
  • 脚本3:sed ':a;N;/\nx-forward/!ba;s/\nx-forward/ x/' test.txt
  • 脚本4:awk '/->/{$0="\n"$0}{printf $0}' test.txt
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值