当前位置: 首页 > news >正文

Linux正则和grep命令

设置命令的默认参数和别名

  • 每次都要输入 ls -l ,烦不烦,我想用 ll 来表示 ls -l, 可以,只要在 ~/.bashrc 中加上 alias ll='ls -l' ,然后运行 source ~/.bashrc 来使配置立即生效即可。

正则表达式

  • 正则表达式就是有规则的字符串,字符串中有一些特殊字符来表示一定的规则,符合这个规则的字符串就能被匹配上。 如 ^the 表示每一行都以the开头的字符串; ^[^a-zA-Z] 表示所有不以英文字母开头的行。

元字符

  • 所谓元字符,就是这个字符是代表一类字符或这代表某种规则。
  • . 对,就是小数点,它代表除换行符外的任意一个字符,注意是一个字符。
  • \w 匹配字母数字下划线和汉子。注意也是匹配一个字符。
  • \s 匹配任意一个空白符。
  • \d 匹配任意一个数字。
  • \b 匹配单词的开头或结尾
  • ^ 匹配行首。
  • $ 匹配行尾。
  • [^x] 匹配任意不是x的字符。
  • [^xyz] 匹配任意不是x,y,z的字符。
  • 另外linux中大写字母一般表示小写字母的相反意义,上面的 w, s, d, b分别有对应的 W, S, D ,B 分别表示它们的相反意思。

数量及各种括号

  • * 放在一个字符的后面,表示前面的字符可以出现0次或多次。
  • ? 同上,但是表示前面的字符可以出现0次或1次。
  • + 同上,但是代表前面的字符可以出现1次或多次。
  • () 小括号,里面的看作一个整体,也就是看作一个"字符",*,? + 等修饰整个小括号里面的内容。
  • [] 中括号,不论里面有多少字符,它仅表示一个字符,如 [abc] 表示字符a 或 字符b或字符c。
  • {} 大括号,修饰前面的一个字符,表示该字符出现多少次,如 {2} 表示除2次,{3,} 表示出现3或3次以上,{3,9} 表示出现次数在3到9之间,包括3和9. 注意 {} 前要加转义符。
  • | 或,如 abc \| cde ,匹配包含 abc 或 cde的行。注意 | 之前要加转义符。

grep

  • grep: global search regular expression (RE). 一种可使用正则进行文本搜索的工具,并把匹配的行打印出来。

    示例

  • 将 /etc/passwd 没有出现 root 的行取出来 : grep -v /etc/passwd -v 参数就表示相反的意思。
  • 在当前目录及子目录下递归搜索行内有 "important" 的文件 : grep -r 'important' *

  • 在当前目录及子目录下递归搜索行内有 "important" 的文件,但仅显示文件名 : grep -l -r 'important' *
  • 搜寻包含 test 或 tast 的行并显示行号 : grep -n 't[ae]st' test.txt
  • 搜索包含 aa 但是 aa 前面不能是 b 的行: grep '[^b]aa'
  • 搜索所有包含 hi并且hi前面不是小写字母的行: grep [^a-z]hi txt3
  • 搜索包含数字的行: grep -n '[0-9]' txt3
  • 搜索行首是The的行: grep -n '^The' txt3
  • 搜索行首第一个字母是小写的行: grep -n '^[a-z]' txt3
  • 搜索行首第一个字符不是字母的行: grep -n '^[^a-zA-Z]' txt3
  • 搜索行尾为小数点的行:grep -n '\.$' txt3 因为小数点是元字符,所以加了转移字符反斜杠。
  • good. 结尾的行: grep -n 'good.$' txt3
  • 找出类似 g??d 的行: grep -n 'g..d' txt3
  • 找出 g后面跟2个或2个以上o的行: grep -n 'go\{2,\}' txt3 注意大括号要前要加转义符。

egrep 对grep的增强,支持扩展的表达式

  • 搜索所有包含 CN 或 US的行: egrep -n 'CN|US' txt3 | 就是扩展的元字符,
  • 如果使用grep时在扩展的元字符前加反斜杠,grep会自动使用egrep. 如上面的也可写成: grep -n 'CN\|US' txt3
  • 搜索所有包含1个或多个3的行:egrep -n 'o+' txt3
  • 搜索所有包含1个或多个go的行: egrep -n '(go)+' txt3

fgrep,查询速度比grep快,但不会识别正则表达式,只会原样搜索字符串。

  • 搜索包含 ** 的行: fgrep -n '**' txt3

转载于:https://www.cnblogs.com/imap/p/7608406.html

相关文章:

  • Azure 中 Linux 虚拟机的大小
  • 【bzoj1758】[Wc2010]重建计划
  • ros 如何使用 openni2_launch
  • Git应用实践(二)
  • 软件项目管理第2次作业:豆瓣测评
  • 【个人训练】(POJ1276)Cash Machine
  • [转] logback 常用配置详解(序)logback 简介
  • 网络视频监控与人脸识别
  • 混合和过度绘制(图层性能 15.3)
  • 【u235】背单词
  • [置顶] 九月半集训总结
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • IntelliJ IDEA之版本控制
  • 【Python】【正则】
  • SharePoint REST API - 使用REST API和jQuery上传一个文件
  • JavaScript-如何实现克隆(clone)函数
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Git 使用集
  • JavaScript HTML DOM
  • Java反射-动态类加载和重新加载
  • redis学习笔记(三):列表、集合、有序集合
  • spring学习第二天
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • vue自定义指令实现v-tap插件
  • 构造函数(constructor)与原型链(prototype)关系
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 走向全栈之MongoDB的使用
  • ​linux启动进程的方式
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #{}和${}的区别?
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (52)只出现一次的数字III
  • (java)关于Thread的挂起和恢复
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)甲方乙方——赵民谈找工作
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .NET CORE 第一节 创建基本的 asp.net core
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 药厂业务系统 CPU爆高分析
  • .Net 知识杂记
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [<死锁专题>]
  • [2018-01-08] Python强化周的第一天
  • [Android] 修改设备访问权限
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [C++] 多线程编程-thread::yield()-sleep_for()
  • [cb]UIGrid+UIStretch的自适应
  • [echarts] y轴不显示0
  • [ffmpeg] x264 配置参数解析
  • [java] 23种设计模式之责任链模式