Linux学习之正则表达式元字符和grep命令

这篇具有很好参考价值的文章主要介绍了Linux学习之正则表达式元字符和grep命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

正则表达式是一种搜索字符串的模式,通俗点理解,也就是普通字符和元字符共同组成的字符集合匹配模式。正则表达式的主要作用是文本搜索和字符串处理。
正则表达式有两种:基本正则表达式;扩展正则表达式。
元字符就是一些具有特殊含义的字符,用于表示某种特定的字符类型或者行为,它的含义就不是显示在计算机上的含义了。基本正则表达式具有如下的元字符:

元字符 名称 作用 举例
. .匹配除换行符之外的任意一个字符,只能匹配一个字符 234.6,就可以23416234262343623446234562346623476234a6234b6等,这里有点多,不一一列举了
* 星号 匹配*前一个字符或者一个正则表达式0至若干次 234*,就可匹配23+零个4或者多个4,比如232342344234444234444...,而f[ae]*ll会匹配fallfellfaallfaa...llfae...llfeallfea...llfeellfee...ll
^ 脱字符,插入符号,折字符 1.匹配一行的开始 2.否定正则表达式中一个字符串的意思 1.^123会匹配每行以123开头的字符串,2.[^a]会匹配没有a的字符串
$ 美元符号 匹配行尾 456$会匹配以456结尾的字符串
[] 方框号 匹配方括号内指定的字符集中的一个字符 [an]会匹配an[b-d]会匹配bcd三个字符
\ 反斜线 转义一个特殊的字符,使这个字符得到字面意义的解释 \^就表示字符串^,不再表示匹配一行开始的意义,而\.就是表示字面含义的.,不再能够匹配任意字符
\<\> 转义尖括号 标记单词边界 尖括号必须是转义的,否则它们只有字符的字面含义。\<you\>就只能匹配you,不能匹配your

grep

grep命令在 Linux 中用于在文件中搜索特定的文本模式。
接下来使用grep来验证上边元字符的使用实例:
先使用下边的命令把一下字符串写到当前greptest.txt文件里边:

echo "god is good" >> greptest.txt
echo "good" >> greptest.txt
echo "good learning" >> greptest.txt
echo "a good learner" >> greptest.txt
echo "gold" >> greptest.txt
echo "1. gold jewelry" >> greptest.txt
echo "2. gold coins" >> greptest.txt
echo "3. gold medal" >> greptest.txt
echo "4. gold standard" >> greptest.txt
echo "5. gold mine" >> greptest.txt
echo "6. gold rush" >> greptest.txt
echo "7. goldsmith" >> greptest.txt
echo "8. gold bar" >> greptest.txt
echo "9. gold leaf" >> greptest.txt
echo "10. gold price" >> greptest.txt
echo "11. gold reserves" >> greptest.txt
echo "12. gold market" >> greptest.txt
echo "13. gold investment" >> greptest.txt
echo "14. gold necklace" >> greptest.txt
echo "15. gold watch" >> greptest.txt
echo "1 gold jewelry" >> greptest.txt
echo "2 gold coins" >> greptest.txt
echo "3 gold medal" >> greptest.txt
echo "4 gold standard" >> greptest.txt
echo "5 gold mine" >> greptest.txt
echo "6 gold rush" >> greptest.txt
echo "7 goldsmith" >> greptest.txt
echo "8 gold bar" >> greptest.txt
echo "9 gold leaf" >> greptest.txt
echo "10 gold price" >> greptest.txt
echo "11 gold reserves" >> greptest.txt
echo "12 gold market" >> greptest.txt
echo "13 gold investment" >> greptest.txt
echo "14 gold necklace" >> greptest.txt
echo "15 gold watch" >> greptest.txt

Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维
cat -n greptest.txt可以把行号在前,内容在后显示出来。
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

grep "." greptest.txt发现全部匹配了,可以看到所有的字符都显示红色了,需要注意的是grep会整行显示,就是说一行中只有有匹配的字符串,那么文件中这一行字符串都会显示,但是匹配的字符串会以红色显示。
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

grep -n "g.d" greptest.txt可以看到匹配greptest.txt里边的godgrep "g..d" greptest.txt匹配的是goodgold,注意冒号之前的绿色数字是文件内容里边对应的行号。
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

grep -n "go*d" greptest.txt可能匹配到godgood,使用cat -n greptest.txt | grep "go*d"也可以匹配到godgood,并且把内容中的行号也显示出来。这种显示格式有些不一样。
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

grep -n "^12" greptest.txt可以把以12开头的字符串匹配上,同样的,cat greptest.txt | grep "^12",也可以转换格式输出,但是可以实现相同的匹配功能,cat -n greptest.txt | grep "^12"就无法进行匹配了,因为cat -n在使用时会先输出多个空格然后在输出内容行号,之后再输出文件里边的内容。
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

grep "e$" greptest.txt可以匹配以e结尾的字符串,grep "good$" greptest.txt可以匹配以good结尾的字符串。
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

grep -n go[ol]d greptest.txt能够匹配goodgoldgrep -n "1[234]" greptest.txt能够匹配121314
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

echo "$ ." >> greptest.txt
echo "*" >> greptest.txt

greptest.txt里边写入$ .*
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

cat -n greptest.txt看一下内容。
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

grep "\$ \." greptest.txt能够匹配到$ .grep -n "\*" greptest.txt能够匹配到*
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

grep -n "goo" greptest.txt是匹配含有goo的字符串,而grep -n "\<goo\>" greptest.txt是完全匹配goo的字符串。
Linux学习之正则表达式元字符和grep命令,Linux基础学习,linux,运维

此文章为8月Day 4学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。文章来源地址https://www.toymoban.com/news/detail-629561.html

到了这里,关于Linux学习之正则表达式元字符和grep命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux - 正则表达式

    目录 1. 正则表达式(regular expression) 1.1 元字符 1.1.1  ^ 表示以什么开头 1.1.2  $ 表示以什么结尾 1.1.3   \\\" . \\\"表示任意单个字符 1.1.4  *表示前面的字符出现0次或者任意次  .*表示所有的字符 1.1.5  |表示或者 1.1.6 ^$ 表示空行 1.1.7  +表示前面字符出现1次以上 1.2  方括号表达式

    2023年04月08日
    浏览(29)
  • Linux Grep 正则表达式

    grep是Linux中用于文本处理的最有用和功能最强大的命令之一。grep在一个或多个输入文件中搜索与正则表达式匹配的行,并将每条匹配的行写入到标准输出 正则表达式是与一组字符串匹配的模式。模式由运算符,文字字符和元字符组成,它们具有特殊的含义。GNU grep支持三种正

    2024年02月04日
    浏览(44)
  • Linux中正则表达式等

    grep命令:主要作用就是过滤查找文本内容 常用的选项有: -m 数字:匹配几次之后停止,按行匹配,不是按字符个数,例如 -v:取反 例如: -n:显示匹配的行号 例如: -c:仅显示匹配的行数,不显示匹配内容 例如: -o:仅显示匹配的内容 例如: -q:静默模式,只输出,无结果 例如:

    2024年02月06日
    浏览(34)
  • Linux Shell :正则表达式

    先来看一句 Shell 代码: dpkg --list : dpkg 是 Debian 系列 Linux 发行版(如 Ubuntu)的包管理工具。 --list 选项用于列出所有已安装的软件包。 | :这是一个管道符号,用于将前一个命令的输出作为后一个命令的输入。在这里, dpkg --list 的输出被直接传递给 grep 命令。 grep -E -o \\\'cu

    2024年02月08日
    浏览(42)
  • Linux 实训4 正则表达式

    将实训4              :正则表达式的完成情况提交实验报告。 创建并输入文本文件 保存退出: Esc+: wq   设置语系为C,代码:#export LANG=C ^匹配行首 ①查看以字符“a”开头的行。 ②查看以字符串“abc\\\"开头的行。 ¥匹配行尾 ①查看以字符串“33”结尾的行。 ②查看以

    2024年02月08日
    浏览(31)
  • linux 正则表达式1和grep

    目录 一、正则表达式 二、元字符 三、次数符号 四、位置锚定 五、实验                             一、正则表达式 通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。 分类: 1. 基本正则表达式 2.扩展正则表达式 二、元字符 元字符: .   匹配任意单

    2024年02月08日
    浏览(40)
  • Linux文本处理工具和正则表达式

    Linux文本处理工具和正则表达式 cat 最常用的文件查看命令;当不指明文件或者文件名为一杠’-\\\'时,读取标准输入。 more 默认将多行文本满屏输出,只允许向文本末尾翻页(空格键满屏翻页;回车键单行翻页),阅读到文末自动退出。 用法 一般使用管道传给more来阅读内容超过

    2024年02月13日
    浏览(59)
  • Linux:shell脚本 正则表达式与AWK

    目录   一、正则表达式 1.2元字符  1.3表示次数 1.4位置锚定 1.5分组或其他 1.6扩展正则表达式 1.7grep 二、AWK awk -F ​编辑三、sed 1.sed简介 2.sed工作流程 3.sed命令格式 3.1打印全部内容  3.2 查看文件,打印全部内容  3.3打印指定行内容 3.4支持正则表达式,打印范围内容  3.5#,/关

    2024年02月12日
    浏览(40)
  • Linux:shell脚本:基础使用(4)《正则表达式-grep工具》

    正则表达式定义:         使用单个字符串来描述,匹配一系列符合某个句法规则的字符串 正则表达式的组成:         普通字符串: 大小写字母,数字,标点符号及一些其他符号         元字符:在正则表达式中具有特殊意义的专用字符 正则表达式不能单独使用,需要配

    2024年02月12日
    浏览(38)
  • Linux:shell脚本:基础使用(6)《正则表达式-awk工具》

    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理,然后输出 1)awk命令会逐行读取文件的内容进行处理 2)awk以’:’为分隔符,将第1行数据格式化为7段,每段数

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包