shell编程--grep命令如何用?
大家在学习正则表达式之前,首先要明确一点,并把它牢牢记在心里,那就是:
在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,不要把二者搞混了。切记!!!
通常有三种文本处理工具/命令:grep、sed、awk,它们三者均可以解释正则。下面我就为大家介绍grep命令的使用方法。
一、使用grep命令搜索文件中的内容
grep和egrep命令能够在一个或多个文件的内容中搜索某一特定的字符模式,也被称为正则表达式(regular expressions)。一个模式可以是一个单一的字符、一个字符串、一个单词或一个句子。
一个正则表达式是描述一组字符串的一个模式。正则表达式的构成是模仿了数学表达式,通过使用操作符将较小的表达式组合成一个新的表达式。一个正则表达式既可以是一些纯文本文字,也可以是用来产生模式的一些特殊字符。为了进一步定义一个搜索模式,grep命令支持以下几种正则表达式的元字符,也称通配符。
ps:正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
c*:将匹配0个或多个字符c
.:将匹配任何一个且只能是一个字符(换行符除外)
[xyz]:将匹配方括号中的任意一个字符
[^xyz]:将匹配不包括方括号中的字符的所有字符
^:锁定行的开头
$:锁定行的结尾
在基本正则表达式中,如元字符*、+、{}、|、和()已经失去了它们原来的意义,如果要回复他们原本的含义要在之前冠以反斜线\,如\*、\+等。
grep命令是用来在每一个文件中或标准输出上搜索特定的模式。当使用grep命令时,包含一个指定字符模式的每一行都会被打印在屏幕上,grep命令的语法格式如下:
grep 选项 模式 文件名
其中,选项可以改变grep命令的搜索方式,除了-w选项外,其他的每个选项都可以在egrep和fgrep命令中使用。grep命令常用选项如下:
-c(count):仅列出包含模式的行数
-i(ignore):忽略模式中字母大小写
-l(list):列出带有匹配行的文件名
-n:在匹配行的前面列出行号
-v:列出没有匹配模式的行(取反)
-w:把表达式当做一个完整的单字来搜索,忽略那些部分匹配的行
-q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容
-A n :如果匹配成功,则将匹配行及其后n行一起打印出来
-B n :如果匹配成功,则将匹配行及其前n行一起打印出来
-C n :如果匹配成功,则将匹配行及其前后n行一起打印出来
ps:如果搜索的是多个文件,grep命令的结果只显示在文件中发现匹配模式的文件名;
如果搜索的是单个文件,grep命令的结果将显示每一个包含匹配模式的行。
上面就是grep命令的基本使用方法。但是有时一个简单的正则表达式无法定位你要搜索的内容,如要搜索同时满足模式一和模式二的数据行,这时egrep命令就可以派上用场。
egrep命令的语法格式和grep命令相同。但是egrep命令是用来在一个或多个文件的内容中利用扩展的正则表达式的元字符搜索特定的模式。扩展的正则表达式的元字符包含了grep命令中使用的正则表达式元字符的同时,还增加了一些额外的元字符,大致有下面几个:
+:匹配一个或多个前导字符
a|b:匹配a或b
(RE):匹配括号中的正则表达式RE
下面我将通过一些基本的例子来增进大家对grep和egrep命令用法的了解。鉴于grep命令中所有的选项egrep都能够使用(egrep更加强大),为方便起见我将使用egrep命令为大家演示:
例一:显示出文件/etc/passwd含有root的行
例二:输出/etc/passwd中任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容
例三:显示出/etc/passwd中有多少行含有nologin
例四:显示出/etc/passwd中那些行含有root,并将行号一块输出
例五:
新建用户abominable、abominate、anomie、atomize,编写正则表达式,将他们匹配出来
例六:新建用户Alex213sb、Wpq2222b、yH438PIG、egon666、egon过滤出用户名组成是字母+数字+字母的行
例七:显示出/etc目录下所有包含root的文件名
例八:过滤掉/etc/ssh/sshd_config内所有注释和所有空行
以上例子只是很小的一部分,大家只要勤加练习,一定很快就能掌握grep命令的使用啦 ^^
以上是shell编程--grep命令如何用?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

MetaMask(中文也叫小狐狸钱包)是一款免费的、广受好评的加密钱包软件。目前,BTCC已支持绑定MetaMask钱包,绑定后可使用MetaMask钱包进行快速登入,储值、买币等,且首次绑定还可获得20USDT体验金。在BTCCMetaMask钱包教学中,我们将详细介绍如何注册和使用MetaMask,以及如何在BTCC绑定并使用小狐狸钱包。MetaMask钱包是什么?MetaMask小狐狸钱包拥有超过3,000万用户,是当今最受欢迎的加密货币钱包之一。它可免费使用,可作为扩充功能安装在网络

使用正则表达式从PHP数组中去除重复值的方法:使用正则表达式/(.*)(.+)/i匹配并替换重复项。遍历数组元素,使用preg_match检查匹配情况。如果匹配,跳过值;否则,将其添加到无重复值的新数组中。

小组件是Win11系统的新增功能,默认是开启状态,但是难免会出现有部分用户不太使用到小组件,看着占位置,因此想要禁用小组件的情况,那么应该如何操作呢?下面小编就教给大家操作方法,大家可以去尝试看看。什么是小组件?小组件是小卡片,用于在Windows桌面上显示你最喜爱的应用和服务中的动态内容。它们显示在小组件板上,你可以在其中发现、固定、取消固定、排列、调整大小和自定义小组件以反映你的兴趣。小组件板经过优化,可根据使用情况显示相关小组件和个性化内容。从任务栏的左角打开小组件板,可在其中看到实时天气

BitgetLaunchpool是一个为所有加密货币爱好者而设计的动态平台。BitgetLaunchpool以其独特的产品脱颖而出。在这里,您可以质押您的代币来解锁更多奖励,包括空投、高额回报,以及专属早期参与者的丰厚奖池。什么是BitgetLaunchpool?BitgetLaunchpool是一个加密货币平台,可以透过用户友善的条款和条件来质押和赚取代币。透过在Launchpool中投入BGB或其他代币,用户有机会获得免费空投、收益和参与丰厚的奖金池。质押资产的收益在T+1小时内计算,奖励按

PHP函数和Shell函数的主要区别在于安全性(PHP函数更安全)、可靠性(Shell函数因操作系统而异)、功能(Shell函数更强大但受shell限制)、性能(PHP函数通常更快)和复杂性(Shell函数更复杂)。它们都用于文件系统、进程和命令操作,但PHP函数是内置的,而Shell函数通过外部shell调用。因此,在服务器文件下载场景中,file_put_contents()函数更安全,而wget命令更灵活。

1、编程可以用于开发各种软件和应用程序,包括网站、手机应用、游戏和数据分析工具等。它的应用领域非常广泛,覆盖了几乎所有行业,包括科学研究、医疗保健、金融、教育、娱乐等。2、学习编程可以帮助我们提高问题解决能力和逻辑思维能力。编程过程中,我们需要分析和理解问题,找出解决方案,并将其转化为代码。这种思维方式能够培养我们的分析和抽象能力,提高我们解决实际问题的能力。

Python通过其易学性和强大功能,是初学者的理想编程入门语言。其基础包括:变量:用于存储数据(数字、字符串、列表等)。数据类型:定义变量中数据的类型(整数、浮点数等)。运算符:用于数学运算和比较。控制流:控制代码执行流(条件语句、循环)。

Python 使初学者能够解决问题。其用户友好的语法、广泛的库以及变量、条件语句和循环等功能可实现高效的代码开发。从管理数据到控制程序流程和执行重复任务,Python 提供了
