什么是正则表达式

  • sed和gawk的正则表达式引擎之间是有区别的。gawk可以使用大多数扩展正则表达式模式符号,并且能够提供一些额外的sed没有的功能。但正因为如此,gawk通常在处理数据流时更慢
$ echo "The book are " | sed -n  '/book/p'
The book are
$ echo "The book are " | sed -n  '/^book/p'  #锁定book出现在行首$ echo "The book ^are " | sed -n  '/book ^/p' #若不将^放在模式开头,则^表示普通字符
The book ^are
$ $ echo "The book good book" | sed -n  '/good/p'
The book good book
$ echo "The book good book" | sed -n  '/good$/p'  #锁定good出现在行尾
  • 使用正则过滤数据流中的空白行
$ sed '/^$/d' data  #匹配行首和行尾什么都没有的行,并删除
This is an added line.
This is the second added line
chenhong:shell_workspace chenhong$ 
  • 点字符用来匹配任意的单字符,除了换行符
$ cat data
Tihs is a test of line.
The cat is sleeping.
That is a very nice hat.
This test is at line four.
$ sed -n '/.at/p' data
The cat is sleeping.
That is a very nice hat.
This test is at line four.
  • 方框号[]表示字符组
$ cat data
Tihs is a test of line.
The cat is sleeping.
That is a very nice hat.
This test is at line four.
at ten o'clock we'll go home.$ sed -n '/[ch]at/p' data  #匹配cat或hat
The cat is sleeping.
That is a very nice hat.$ sed -n '/[^ch]at/p' data #匹配 .at ,其中不能是cat和hat
This test is at line four.$ sed -n '/[c-f]at/p' data  # 匹配[cdef]at
The cat is sleeping.$ sed -n '/[a-bh-k]at/p' data #匹配[abhijk]at
That is a very nice hat.
  • 使用正则过滤出4位数字的行
$ cat data
21234
1000
1001
1002
1003
1004
1005
45321
$ sed -n '/^[0123456789][0123456789][0123456789][0123456789]$/p' data
1000
1001
1002
1003
1004
1005
$ sed -n '/^[0-9][0-9][0-9][0-9]$/p' data  #使用区间写法
1000
1001
1002
1003
1004
1005
  • 正则表达式中的特殊字符
$ echo "abc" | sed -n '/[[:digit:]]/p' #匹配0~9之间的数字
$ echo "abc" | sed -n '/[[:alpha:]]/p' #匹配任意字母,不管是大写还是小写
abc
$ echo "This is, a test" | sed -n '/[[:punct:]]/p' #匹配标点符号
This is, a test
  • 星号表示前个字符会出现0次或多次
$ echo "ik" | sed -n '/ie*k/p'  #e出现0次
ik
$ echo "iek" | sed -n '/ie*k/p' #e出现1次
iek
$ echo "ieek" | sed -n '/ie*k/p' #e出现多次
ieek$ echo "baat" | sed -n "/b[ae]*t/p"
baat
$ echo "baaeeet" | sed -n "/b[ae]*t/p"
baaeeet
  • 问号表示前个字符可以出现0次或1次
$ echo "bt" | gawk '/be?t/{print $0}'
bt
$ echo "bet" | gawk '/be?t/{print $0}'
bet
$ echo "beet" | gawk '/be?t/{print $0}'
  • 加号表明前面的字符可以出现1次或多次
$ echo "beet" | gawk '/be+t/{print $0}'
beet
$ echo "bet" | gawk '/be+t/{print $0}'
bet
$ echo "bt" | gawk '/be+t/{print $0}'
  • 花括号指定字符出现的次数
$ echo "bet" | gawk --re-interval '/be{2}t/{print $0}'
$ echo "beet" | gawk --re-interval '/be{2}t/{print $0}' #指定e出现2次
beet$ echo "beet" | gawk --re-interval '/be{1,2}t/{print $0}'
beet
$ echo "bet" | gawk --re-interval '/be{1,2}t/{print $0}' #指定e出现1~2次
bet
  • 管道符指定使用两个或多个模式
$ echo "The cat is asleep " | gawk '/cat|dog/{print $0}'
The cat is asleep
$ echo "The dog is asleep " | gawk '/cat|dog/{print $0}'
The dog is asleep
$ echo "The sheep is asleep " | gawk '/cat|dog/{print $0}'
  • 使用括号可以对多个字符进行聚合,然后对聚合使用特殊字符?,*,+等
$ echo "Saturday" | gawk '/Sat(urday)?/{print $0}'
Saturday
  • 统计$PATH变量中可执行文件
#!/bin/bash
#遍历PATH环境变量中的可执行文件数量#获得目录中的可执行文件,参数$1为目录地址
function get_file_in_dir(){local path=$1;local files=`ls $path`;local filelocal count=0;for file in $filesdolocal absfile=$path/$fileif [ -d $absfile ]then    #echo $absfile is directorylocal result=`get_file_in_dir $absfile`;count=$[ $count + $result ]elif [ -x $absfile ]then#echo $absfile is "-x"count=$[ $count + 1 ]elseecho $absfile "unknow"fidoneecho $count;
}#echo `get_file_in_dir /opt/local/bin`;paths=`echo $PATH | sed 's/:/ /g'`;
#echo $paths
for path in $paths
docount=0files=`ls $path`;for file in $filesdoabsfile=$path/$fileif [ -d "$absfile" ] #文件为目录thenresult=`get_file_in_dir $absfile`;count=$[ $count + $result ]elif [ -x "$absfile" ] #文件可执行thencount=$[ $count + 1 ];fidoneecho "$path -- $count "
done

Linux命令行与shell脚本(17)--正则表达式相关推荐

  1. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  2. 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf

    下载地址:网盘下载 内容简介  · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shel ...

  3. 【2018深信服 醒狮计划】《Linux命令行与Shell脚本编程大全》学习笔记

    2018深信服"醒狮计划"笔记 第3周(5.02-5.13) 课程 必修 选修 基本要求 Shell编程 <Linux命令行与Shell脚本编程大全> <Perl ...

  4. 《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):函数与图形化脚本

    <linux命令行与shell脚本编程大全> 全书4部分: ☆ [1]linux命令行(1-10章) ☆ [2]shell脚本编程基础(11-16章) ☆ [3]高级shell脚本编程(1 ...

  5. 【Linux命令行与Shell脚本编程】三,Linux文件系统

    Linux命令行与Shell脚本编程 第三章 Linux文件系统 文章目录 Linux命令行与Shell脚本编程 三.Linux文件系统 3.1,查看文件 3.1.1,ls 命令 选项和参数 3.1. ...

  6. linux 命令行与shell脚本编程大全

    linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...

  7. linux脚本求命令行上整数和,《Linux命令行与shell脚本编程大全》 第二十二章 学习札记...

    <Linux命令行与shell脚本编程大全> 第二十二章 学习笔记 第二十二章:使用其他shell 什么是dash shell Debian的dash shell是ash shell的直系 ...

  8. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---34

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

  9. Linux命令行与shell脚本编程大全(第3版)

    作者:[美] 布鲁姆(Richard Blum),布雷斯纳汉(Christine Bresnahan) 著,门佳,武海峰 译 出版社:人民邮电出版社 品牌:iTuring 出版时间:2016-08-0 ...

  10. Linux_《Linux命令行与shell脚本编程大全》第十八章学习总结

    时间:2017年12月04日星期一 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>( ...

最新文章

  1. 出现这四种情况,才是考虑分库分表的时候!
  2. Hive常见面试问题(持续更新)
  3. docker maven 打包jar_maven 打包 spring boot 生成docker 镜像
  4. Ninject之旅之十一:Ninject动态工厂(附程序下载)
  5. 如何使用「番茄法」高效的写算法题?
  6. 重新编译hadoop-2.7.2-src的native以支持Snappy解压压缩库
  7. 聚焦BCS|吴云坤产业峰会演讲:用内生安全框架提升网络安全产值
  8. [转]动软代码生成器之模板功能介绍
  9. 浅析C#的事件处理和自定义事件 (转载)
  10. SolidWorks.2020.SP5.0软件下载
  11. 《Spring实战》读书笔记
  12. Kaptcha 使用
  13. AI——六(图层、蒙版)
  14. 清空html输入框,jquery清空textarea等输入框
  15. IDEA中出现Connection refused: connect问题的解决方法
  16. 【QT-版本】QT版本选择问题
  17. Matlab 元胞自动机(模拟传染病传播)
  18. 【MFC】动态加载Picture Control控件中的图片
  19. xamarin android网络请求总结
  20. python字典创建、使用字典保存中国主要城市和对应邮编_Python字典及相关操作(内含例题)...

热门文章

  1. 【NodeJs-5天学习】第四天存储篇④ ——基于MQTT的环境温度检测,升级存储为mysql
  2. Web安全学习day01
  3. 华为立 Flag:一年超越三星做全球智能手机老大!
  4. Linux iptables 防火墙 添加删除 端口
  5. cf Educational Codeforces Round 54 C. Meme Problem
  6. 在微型计算机中1mb等于多少字节,字节换算-1mb等于多少kb
  7. mysql解析json_mysql解析简单json字符串
  8. 风变python基础语法_风变编程python (基础语法爬虫精进)
  9. 3PAR SSMC管理平台更新3.8.3.0.26
  10. [杀鸡用鸡刀]扯谈“快准狠”的去服务化商业模式