一、正则表达式

之前学习find命令时,就已经接触过一些简单的正则,那么我们现在来学习一些复杂的正则。首先,我们还是来复习什么是正则表达式,看这个教程先,一定要多看几遍,至少知道正则大概长什么样子。(转载至https://deerchao.net/tutorials/regex/regex.htm )正则就是有规律的一串字符串,用来描述一个特定的内容,正则适合用来处理字符串,不太适合处理数学逻辑。学好正则对编写shell脚本有很大的好处,所有的shell脚本大部分都涉及到正则表达式。各种编程工具中也需要使用正则。

用grep sed awk去处理字符串

能不能写好shell脚本php

ngix配置文件中也有正则

正则核心符号

。一个任意字符

个*

? 零个或1个

一个或多个

^ 开头

# 末尾

二、grep命令

(一)grep命令简介

用于过滤文件中的字符,(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。系统本身通过/etc/profile.d目录下的colorgrep.sh文件做了别名==grep --color,能够方便的显示找到的行。

用法: grep [选项]... PATTERN [FILE]...

grep -cniv ‘关键字(正则)’ 文件路径

选项

-i 不区分大小写,默认情况下grep不区分关键字大小写

-c 行数

-n 显示关键词所在行号

-v取反(使用较多)

-r 遍历所有层级子目录

-A后面跟数字,过滤出符合要求的行以及下面的n行

-B后面跟数字,过滤符合要求的行以及上面的n行

-C后面跟数字,过滤符合要求的行以及上下各n行

扩展正则 grep -E ==sed -r ==awk

反复练习,掌握正则表达式

首先做个准备工作,把/etc/passwd文档拷贝到其他路径下,如/tmp下做试验

(二)基本用法示例

1、过滤出关键字root所在的行并显示行号。

grep -n 'root' /etc/passwd

可以看到有颜色标识关键字。

2、统计某一关键字出现的行数

grep -c 'nologin' passwd

下面那个15就是说nologin这个关键字出现了15次

3、搜索某一关键字出现的行,然后把没有出现关键字的行过滤出来

grep -vn 'nologin' passwd

4、搜索整个文件夹,在文件内容中招root。(注意与find命令找到的东西的区别)

grep -r 'root' /etc

紫色是文件的路径,搜索出来的东西很多,grep把/etc下所有包含root的文件中的root字所在的行和所在的文件信息都列了出来。

5、-ABC 作用演示,能列出关键字所在的行和临近的行。

grep -A2 'root' passwd

grep -B2 'root' passwd

grep -C2 'root' passwd

-C选项会把搜到的行的附近的行都列出来,当然如果搜索的目标在头上或者文尾,就不会列相应的行。

grep+正则表达式(regexp)用法举例

命令写法:grep -(cirvnABC) 'regexp' 文件或目录路径

精髓在regexp的写法,如何正确的把想要的东西用正则表达出来。

1、把含有0到9十个数字任意一个字符的行列出来

grep '[0-9]' passwd

取反再搜索下

没了,说明passwd文件中每一行都带有数字

这里说明[0-9]==[0123456789]

2、把不以#号开头的行打印出来,

这条命令经常用于查看程序或者系统的配置文件,这种文件经常有大段的以'#'开头的注释行,直接看很麻烦。

grep -vn '^#' /etc/ssh/sshd_config

还是有空行,我们要再把空行过滤掉。

grep -vn '^#' /etc/ssh/sshd_config|grep -v '^$'

3、显示test.txt文档中含有r.o关键字的行

grep 'r.o' test.txt

.号表示任意一个字符,a-z,A-Z,0-9,特殊号等等。

4、搜索test.txt中形如'r*o'的行

grep 'r*o' test.txt

注意这个正则的匹配结果,“r*o”可以代表的东西是只要以零个或任意多个r开头o结尾的字符,ro肯定可以,o也可以因为他表示0个r和1个o,rrro,rro这些肯定可以。

linux命令行 正则,Linux shell基础(四)正则表达式与grep命令 beta相关推荐

  1. linux初始:命令行解释器(shell)、权限

    目录 命令行解释器 什么是命令行解释器(shell) 命令行解释器的作用 权限 权限的种类 结合用户去理解权限 如何查看权限 用户和用户组 如何看懂权限 如何更改权限 权限对于文件或文件夹的影响 权限 ...

  2. Linux(12)-命令行的使用,shell脚本

    命令行的使用,shell脚本 1.终端shell,man 2.shell 编程 2.1 shell脚本 2.2 注释 2.3 指明所用的shell 2.4 支持函数 2.5 使用变量 2.6 解析命令 ...

  3. linux中shell命令行缩进,Linux下几个实用的bash命令 | 旺旺知识库

    一.扩展字段匹配 首先我们来看一个叫做扩展字段匹配的功能.这个选项允许你执行比标准Bash所提供的更复杂的字段匹配.例如,你可以定位除了后缀为.tmp之外的所有文件.扩展字段匹配功能可以通过shopt ...

  4. Linux之(5)账户和shell基础知识

    Linux之(5)账户和shell基础知识 Author:onceday date:2022年8月23日 漫漫长路,而今才刚刚开始- 本内容主要收集整理于: <Linux命令行与shell脚本编 ...

  5. 【githubshare】Linux sed 命令行常用汇总:useful-sed,收集了 sed 命令行的诸多常见用法,可用于快速处理文本文件

    Linux sed 命令行常用汇总:useful-sed,收集了 sed 命令行的诸多常见用法,可用于快速处理文本文件. 仓库内提供了不少示例,如输出文件首行内容,正则匹配替换文本内容.删除空文件.删 ...

  6. linux设置历史命令行数,Linux设置history命令显示行数以及时间

    Linux和unix上都提供了history命令,可以查询以前执行的命令历史记录 但是,这个记录并不包含时间项目 因此只能看到命令,但是不知道什么时间执行的 如何让history记录时间呢? 解决方案 ...

  7. 访问命令行(Linux基本命令)

    一.Bash Shell 简介 bash(Bourne Again SHell)是一种在许多Linux发行版中默认使用的命令行解释器(shell).它是Linux系统管理和开发的重要工具之一,也是Sh ...

  8. linux终端使用python3,3 个 Python 命令行工具 | Linux 中国

    原标题:3 个 Python 命令行工具 | Linux 中国 用 Click.Docopt 和 Fire 库写你自己的命令行应用. -- Jeff Triplett, Lacey Williams ...

  9. linux终端的重启命令有哪些,如何使用命令行重启Linux

    有时在调试问题或更新内核时,您可能需要重新引导Linux系统.如果您有headless服务器,则需要了解如何从命令行重新启动系统. 在现代Linux发行版中,systemctl实用程序替换了较旧的Li ...

最新文章

  1. 机器学习_周志华_问题汇总_第2周
  2. 阿里云 ubuntu jdk安装及java环境变量设置
  3. Java从零开始学四十五(Socket编程基础)
  4. xStream完美转换XML、JSON
  5. 数据结构之线性查找和折半查找
  6. iphone8plus屏幕尺寸_百思买在苹果发布会前列出了一款“iPhone SE Plus”屏幕保护保护膜...
  7. 推荐实践:结对Review
  8. 我的小程序入门笔记(一)目录结构
  9. saltstack系列2之zabbix-agent自动化部署
  10. TypeError: TF_SessionRun_wrapper: expected all values in input dict to be ndarray
  11. GBK编码表与编码字库
  12. Ubuntu下使用Monaco字体
  13. 三菱a系列motion软体_三菱系列 PLC常见问题解答
  14. pdf如何去除保护限制,pdf复制打印限制怎么解除?
  15. SharePoint 2019 预览版下载地址(中文)
  16. FineReport如何手动推送APP消息
  17. 运维是做什么的?史上最全互联网Linux工作规划!十分钟找到linux运维工程师职业方向!...
  18. Redis+Lua+Java
  19. VB6 简单实现 支付宝二维码扫马支付
  20. 人脸识别技术介绍和表情识别最新研究

热门文章

  1. 【Oracle】DBMS_STATS.GATHER_TABLE_STATS
  2. 异常问题解决Error:Execution failed for task ‘:app:processDebugManifest‘
  3. 未能加载文件或程序集 CrystalDecisions.Web Version=10.2.3600解决方法
  4. Win 10 没有 Hyper-V 解决方案
  5. 问题解决: 此文件来自其他计算机,可能被阻止以帮助保护该计算机/WORD在试图打开文件时遇到错误……
  6. getOutputStream() has already been called for this response解释以及解决方法
  7. 关于博客园开放API的授权问题解决
  8. 是否有唯一的Android设备ID?
  9. 电脑重装系统需要全盘格式化吗?这个事项需要看情况
  10. canvas 文字颜色_一篇图文学会HTML5的canvas标签,直线曲线文字渐变,统统可以有...