目录

正则表达式

基本正则表达式

扩展正则表达式

grep

tr

diff

du

wc

find


正则表达式

正则表达式,又称正规表示法、常规表示法( Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。正则表达式可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

正则表达式分为 基本正则表达式 和 扩展正则表达式。

元字符就是指那些在正则表达式中具有特殊意义的专用字符

基本正则表达式

字符匹配

元字符 含义
. 匹配单个任意字符
[a-z] 字符范围,只匹配a-z内的任意字符
[ ^a-z] 匹配a-z之外的任意字符

次数匹配

元字符 含义
* 匹配0或任意多个单字符,一般结合 . 使用
\? 匹配前面的字符0次或1次,即前面的字符可有可无
\+ 匹配前面的字符至少一次,即前面的字符至少出现一次
x\{n\} 精确匹配 x 出现次数为 n
x\{n,\} 匹配 x 出现次数至少为 n
x\{n,m\}

匹配 x 出现次数在 n,m 之间

位置匹配

元字符 含义
^ 只匹配行首
$ 只匹配行尾
\<  锚定词首,用于单词的最左侧
\>  锚定词尾,用于单词的最右侧

分组及引用

元字符 含义
\( \) 将一个或多个字符捆绑在一起,当做一个整体
\1,\2,\3.....

向后引用前面被匹配到的第1个、第2个,第3个.....

  1. 1、过滤 /etc/passwd 中以sS开头的行
  2. grep "^[sS]" /etc/passwd
  3. 2、过滤 /etc/passwd 中不以小写字母开头的行
  4. grep "^[^a-z]" /etc/passwd
  5. 3、过滤 /etc/passwd 中以nologin结尾的行
  6. grep "nologin$" /etc/passwd
  7. 4、过滤 /etc/passwd 中以空格开头的行
  8. grep "^ " /etc/passwd
  9. 5、过滤 /etc/passwd 中的空行
  10. grep "^$" /etc/passwd
  11. 6、过滤 /etc/passwd 中以r开头的行,r后面可以跟0个或任意多个o(也就是说这行的第一个字符必须是r,这行还可以有0个或任意个o)
  12. grep "^ro*" /etc/passwd
  13. 7、过滤 /etc/passwd 中以r开头的行,r后面必须跟1个或1个以上的字符(也就是这行第一个字符必须是r,而且这行必须还有其他字符,空格也算字符)
  14. grep "^r." /etc/passwd
  15. 8、过滤 /etc/passwd r后跟了任意字符,任意字符后跟了 h 的行 (也就是这一行必须得有rh,而且h必须在r的后面)
  16. grep "r.*h" /etc/passwd
  17. 9、过滤/etc/passwd 中,包含 root 单词的行,并且root不和其他字符相邻(空格不算)
  18. grep "\<root\>" /etc/passwd
  19. 10、过滤 /etc/passwd r后跟了o o出现0次或者1此的行
  20. grep "ro\?" /etc/passwd
  21. 11、过滤 /etc/passwd r后跟了o o出现至少一次的行
  22. grep "ro\+" /etc/passwd
  23. 12、过滤 /etc/passwd 中, r后跟了oo只出现2次的行
  24. grep "ro\{2\}" /etc/passwd
  25. 13、过滤 /etc/passwd 中, r 后跟了o o出现至少1次至多2次的行
  26. grep "ro\{1,2\}" /etc/passwd
  27. 14 过滤 /etc/passwd 中,r后跟了o, o 至少出现2次的行
  28. grep "ro\{2,\}" /etc/passwd

扩展正则表达式

扩展正则表达式使用 egrep 或者 grep  -E

元字符 含义
? 匹配紧挨在前面的字符 0 次或 1 次
{m,n} 匹配紧挨着前面的字符至少 m 次,至多 n 次
+ 至少匹配前面的字符一次
a|b 匹配 a 或者 b
() 分组
  1. 1、匹配 /etc/passwd r后紧跟了oo出现0次或者1次的行
  2. egrep "ro?" /etc/passwd
  3. 2、匹配 /etc/passwd r后紧跟了oo出现至少1次至多2次的行
  4. egrep "ro{1,2}" /etc/passwd
  5. 3、匹配 /etc/passwd r后紧跟了oo出现至少1次的行
  6. egrep "ro+" /etc/passwd
  7. 4、匹配 /etc/passwd 中出现root或者halt的行
  8. egrep "root|halt" /etc/passwd
  9. 5、匹配 /etc/passwd 中出现root on或者halt failed的行
  10. egrep "(root on|halt failed)" /etc/passwd

grep

Linux中grep工具的使用

tr

命令 含义
tr   set1  set2 用 set2 的字符替换 set1
tr -d set1 删除 set1 中指定的字符
tr  -s  set1 压缩 set1 中指定的字符
tr -s  set1  set2 用 set2 的字符替换 set1 ,然后压缩 set2 中指定的字符
tr  -ds  set1  set2

先删除 set1 的字符,再压缩 set1 中的字符

eg:  tr  'A-Z'  'a-z'   <  passwd   将passwd中 A-Z 的大写字符全部替换成 a-z 的小写字符,但是并不会改变passwd中的数据

tr  'A-Z'  'a-z'  < passwd  >  passwd2   将passwd中 A-Z 的大写字符全部替换成 a-z 的小写字符,然后写入到 passwd2 中

diff

diff   passwd   passwd2     比较两个文件的不同

这里表示文件passwd和文件passwd2第2行、第4、5行和第7行都不同,并且分别打印出文件1和文件3的第2、4 、5、7 行

diff  passwd    passwd2   > diff.path               将 passwd 和 passwd2 的不同写入到 diff.path文件中

patch  -b  passwd2  diff.path                        用 diff.path文件修改 passwd2 中的不同,最后得到的 passwd2 文件和 passwd 文件一模一样

du

du : 查看目录或文件占用大小

  • 不加参数时,显示当前文件夹下的所有文件夹的磁盘使用情况(包括递归文件夹内的文件夹)
  • -a  给指定文件夹内的所有文件显示磁盘使用情况( 包括层层递归文件 )
  • -s  仅显示总计,即当前目录的大小
  • -h 以人性化方式显示
  • du -sh    /tmp/test     或者      du -sh  /tmp/test/                      显示test文件夹的占用大小
  • du -sh   /tmp/test/*      显示test文件夹内的所有文件和文件夹的占用大小 (不包括递归文件)
  • du -ah  /tmp/test         显示test文件夹内的所有文件的占用大小(包括递归文件)

wc

wc : 统计文件中的数据

  • -  l 统计行数
  • - c 统计字节数
  •       - w 统计字数
  • - m 统计字符数

统计文件夹内文件的个数:         ls -l | grep "^-" | wc -l

统计文件夹内包括递归文件的个数:   ls -lR | grep "^-" | wc -l

统计文件夹内文件夹的个数 :     ls -l | grep "^d" | wc -l

统计文件夹内包括递归文件夹的个数:   ls -lR | grep "^d" | wc -l

find

find :查找文件或文件夹

  • 根据文件名查找     find  /tmp  -name  abc     查找/tmp目录下名字叫做abc的文件,它会遍历tmp目录下的所有文件及文件夹
  • 根据文件大小查找   find /tmp   -size    -1M       +号表示大于  -号表示小于
  • -name   通过文件名查找
  • -size     通过文件大小查找
  • -type    通过文件类型查找
  • -user    通过文件用户查找
  • -perm  通过权限查找
  • 因为find对管道支持比较弱,所以可以借助exec扩展选项
  • find /etc  -size  +1M  -exec  ls  -lh  {}  \;               {}代表find查找到的内容
  • find /etc -size +1M   -exec  cp  {}   /tmp/test/  \;
  • find  /  -type  -newermt  '2018 '  !   -newermt   ''

find命令按时间查找文件

  1. find /etc -atime 3 #查找/etc目录三天之内查看过的文件
  2. find /etc -mtime -3 #查找/etc目录三天之内修改过的文件
  3. find /etc mtime +3 #查找三天前修改过的文件
  4. find /etc -type f -newermt '2014-1-1 00:00:00' ! -newermt '2015-1-1 00:00:00' #查找在2014-1-1 00:00:00和 2015-1-1 00:00:00 之间的文件

相关文章:Linux中grep工具的使用

Linux中awk工具的使用

Linux中sed工具的使用

Linux中正则表达式和字符串的查询、替换(tr/diff/wc/find)的更多相关文章

  1. linux中sort、uniq、cut、tr、wc命令的使用

    文本处理命令 1.sort命令 使用场景 : 用于将文件内容加以排序(可以和cat一起用) 参数 作用 -n 依照数值的大小排序 -r 以相反的顺序来排序(默认只比较第一个数,-rn是按所有数值比较) ...

  2. 07: linux中正则表达式与grep使用

    1.1 linux中正则表达式 1.^linux        以linux开头的行 2.$php         以php结尾的行 3..                匹配任意单字符 4..+  ...

  3. 11、Linux基础--sort、uniq、cut、tr、wc、流处理工具sed

    笔记 1.晨考 1.写出过滤手机号的正则表达式 1[0-9]{10} 2.写出过滤邮箱的正则表达式 chenyang@123.com [a-zA-Z0-9-_]+@[a-z0-9]+\.(com|cn ...

  4. 在Linux中批量修改字符串的命令

    昨天一个朋友忽然问我,在Linux下如何批量修改字符串,当时瞬间懵逼了,完全想不起来....... 今天特意的重温了一下Linux下的一些常用命令,并将这个遗忘的批量修改字符串的命令记录下来(资料来自 ...

  5. linux中shell截取字符串方法总结

    截取字符串的方法一共有八种,主要为以下方法 shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=wo ...

  6. node中转换URL字符串与查询字符串

    一个完整的URL字符串中,从"?"(不包括?)到"#"(如果存在#)或者到该URL字符串结束(如果不存在#)的这一部分称为查询字符串. 可以使用Query St ...

  7. SQLServer如何删除字段中的某个字符串,或者替换为空格?

    sql="update Table set 字段=REPLACE ( 字段,'123' , ' ') where XXX条件"把字段中123替换为空格

  8. Linux中命令别名alias与命令替换

    当我们使用bash进行一些操作的时候,希望一些较为长的命令使用一些短的命令即可完成输入运行的话,我们就可以使用alias命令别名来帮助我们完成这个任务 alias作为一个bash的内置命令,具有一定的 ...

  9. linux 中 ll 命令如何让查询结果按时间升序或降序排序?

    -t选项的功能是使输出的结果将以时间降序排列.如果希望按时间的升序排列,可以使用管道符将返回的结果传入tac命令.用法示例:查询当前目录的文件并以降序排列: ll -t查询当前目录的文件并以升序排列: ...

随机推荐

  1. POJ-2502(Dijikstra应用+最短路)

    Subway POJ-2502 这里除了直接相连的地铁站,其他图上所有的点都要连线,这里是走路的速度. 记住最后的结果需要四舍五入,否则出错. #include<iostream> #in ...

  2. 一文读懂Java动态代理

    作者 :潘潘 日期 :2020-11-22 事实上,对于很多Java编程人员来说,可能只需要达到从入门到上手的编程水准,就能很好的完成大部分研发工作.除非自己强主动获取,或者工作倒逼你学习,否则我们好 ...

  3. 免费报表工具 积木报表(JiMuReport)的安装

    分享一b/s报表工具(服务),积木报表(JiMuReport),张代浩大佬出品. 官网:http://www.jimureport.com/ 离线版官方下载:https://github.com/zh ...

  4. SEO 在 SPA 站点中的实践

    背景 观察基于 create-react-doc 搭建的文档站点, 发现网页代码光秃秃的一片(见下图).这显然是单页应用 (SPA) 站点的通病 -- 不利于文档被搜索引擎搜索 (SEO). 难道 S ...

  5. 【翻译】内部API的价值

    内部api的设计,主要是为了简化软件的开发,简化系统和操作过程.目前绝大多数用例是这样的. 内部api经常被忽略,因为它们是针对内部开发人员的.这种类型的api通常使用于特定公司及其部门的专用数据.尽 ...

  6. Hibernate学习实例

    一 Hibernate简介 Hibernate是一种Java语言下的对象关系映射(ORM)解决方案.为面向对象的领域模型到传统的关系型数据库的映射提供了一个使用方便的框架. 二 Hibernate设计 ...

  7. python plt画图横纵坐标0点重合

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.mlab as mlab import matplotlib.pyplot a ...

  8. CMU15-455 Lab2 - task4 Concurrency Index -并发B+树索引算法的实现

    最近在做 CMU-15-445 Database System,lab2 是需要完成一个支持并发操作的B+树,最后一部分的 Task4 是完成并发的索引这里对这部分加锁的思路和完成做一个总结,关于 B ...

  9. linux程序开机自动启动

    linux如果需要实现开机启动, 可以找到 $HOME/.config/autostart 目录(没有的话新建一个),在该文件夹下创建一个空文件,文件名自拟,后缀必须是desktop,如:dingda ...

  10. Android studio 简易登录界面

    •参考资料 [1]:视频资源 [2]:Android TextView设置图标,调整图标大小 •效果展示图 •前置知识 TextView EditText Button 以及按压效果,点击事件 •出现 ...