首页 > 其他分享 >ma系列之-7-文本处理工具grep egrep 和正则

ma系列之-7-文本处理工具grep egrep 和正则

时间:2023-06-14 17:35:24浏览次数:44  
标签:字符 egrep 匹配 ma 文本处理 正则 任意 grep root


 

 

1 概念:

 

grep概念: 根据模式搜索文本,并将符合模式的文本行显示出来。  global reserch by expression
grep的特点:就是在某个行中找只要符合匹配的行就可以,就是做部分匹配的,不是整个单词匹配,显示的是整行数据,重点展示的是匹配到的那个字段。

 

grep使用的模式Pattern组成: 由文本字符和正则表达式的元字符组合而成匹配条件。

 

2 grep写法:

grep [options] PATTERN [FILE...]
 -i: 忽略大小写
 --color 匹配到的带颜色展示
 -v: 显示没有被模式匹配到的行
 -o:只显示被模式匹配到的字符串

eg:  # grep --color -o 'a*b' test   如果匹配模式中没有正则表达式的元字符,那么PATTERN的单双引号不加都可以

 

 

3 模式Pattern使用到的正则介绍如下:

 

3.1 正则匹配范围:
*: 匹配其任意前面字符,前面字符出现次数为0到多次
?: 匹配其任意前面字符,前面字符出现0次或者1次    eg: # grep --color -o 'a\?b' test    需要使用转义逃逸符(让linux不执行被转义的那部分字符) 否则匹配不出来
[]: 指定范围内
[^]: 指定范围外
.*: 任意长度的任意字符(表示匹配前面.0或者多次 而.在正则中又表示任意单个字符 因此综合结果就是匹配任意长度字符)
\?: 匹配其前面的字符1次或0次
\{m,n\}:匹配其前面的字符至少m次,至多n次
 \{1,\}: 至少一次
 \{0,3\}: 至少0次,最多3次  eg: grep 'a\{1,3\}b' test.txt 表示去text.txt中找匹配到a至少出现1次最多出现3次后紧跟b的行

 

 

3.2 正则匹配特点(贪婪模式): 
[root@chinadaas109 zhoumingtest]# cat  test
ab
aab
abb
acbacb
[root@chinadaas109 zhoumingtest]# grep 'a*b' test  表示查找b前面出现字符a为0或者多次的单词,并将符合条件的单词打印出来
ab
aab
abb
acbacb    此时从开头到结尾都匹配到了,这就是正则匹配的默认模式,能匹配到多少就匹配到多少(贪婪模式)

 

3.3 正则元字符:(这些元字符本身没有含义,只是表示一些统配的含义)
.: 匹配任意单个字符
[]: 匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
字符集合:
[:digit:], 数字
[:lower:], 小写字母
[:upper:], 大写字母
[:punct:], 标点符号
[:space:], 空白字符
[:alpha:], 所有字母
[:alnum:], 所有数字和字母

 

3.4 正则位置锚定:

^: 锚定行首,此字符后面的任意内容必须出现在行首   
$: 锚定行尾,此字符前面的任意内容必须出现在行尾
^$: 空白行

\<或\b: 锚定词首,其后面的任意字符必须作为单词首部出现   <--------> 类比于^ ,这个是表示行首,而 \<表示单词词首
\>或\b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现  <--------> 类比于$ ,这个是表示行尾,而 \<表示单词词尾

 

位置锚定和正则元字符结合案例:

匹配passwd文件中以root开头的行
# grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash

查询inittab文件内的空白行数
# grep '^$' /etc/inittab | wc -l
0

查询inittab文件内末尾为数字的行 
# grep '[[:digit:]]$' /etc/inittab
#   5 - X11

 

词首/词尾 测试案例:

\<root\> 表示匹配整行中只有root这个单词的行
查询以root为行尾的行
# cat test
ab 
aab
abb
acb
rooter
the user is root
# grep 'root\>' test
the user is root

 

3.5 正则分组:

 

写法: \(\) eg: \(ab\)*   ---> *表示匹配的是ab这个整体 0次或者多次
 分组的主要目的是--->后向引用(前面出现什么,后面就能引用到什么)
 \1: 引用第一个左括号以及与之对应的右括号所包括的所有内容
 \2: 引用第二个左括号以及与之对应的右括号所包括的所有内容
 \3: 引用第三个左括号以及与之对应的右括号所包括的所有内容

 

案例:

# cat test
he love his lover
she like her lover
he like his liker
she love her liker

# grep '\(l..e\).*\1' test   ---> 反向引用的案例, 匹配 l..e中间是任意字符然后后面也要是前面l..e出现的内容的行 
he love his lover
he like his liker

 

 

 

标签:字符,egrep,匹配,ma,文本处理,正则,任意,grep,root
From: https://blog.51cto.com/u_16081606/6478754

相关文章

  • DR5插件加强版 for Mac(ps磨皮滤镜) v5.0中文版
    dr5中文版是一款功能强大的ps磨皮插件集合版,整合了dr5磨皮美妆功能和工笔画功能,实现一个面板上集成众多修图功能,帮助用户一键磨皮降噪美白、局部平滑、表面平滑、改变色调、斑点祛除、液化校正、美白牙齿、眼睛增强等等,专注人像修饰,是您日常修图必备插件。DR5插件加强版下载Del......
  • Markdown语法
    markdown语法1.标题井号+空格一级标题两个井号+空格二级标题最多支持六级标题2.引用大于号表示引用3.列表有序列表数字+点+空格开门关门无序列表短横线+空格无序列表1无序列表2任务列表短横线+空格+左方括号+空格+右方括号吃......
  • ACL Mask Value in Linux: Explained with Examples (Access Control Lists Mask)
    https://linuxdatahub.com/masks-in-acl-linux-explained-with-examples-access-control-lists-mask/https://linuxdatahub.com/access-control-lists-acl-in-linux-explained/https://www.liquidweb.com/kb/what-is-umask-and-how-to-use-it-effectively/chmod770bbs......
  • MaxCompute中如何处理异常字符
    背景在处理数据时,当业务数据同步至MaxCompute后,会产生一些含异常字符的脏数据,比如字段中包含了一个不可见字符,在DataWorks中显示不出来,但在BI界面又会显示成其他字符,影响整体观感。这种情况,通常我们的解法是,将异常的字符洗掉,下面来介绍几种常见的处理异常字符的方法。问题描述定位......
  • How many ways of selecting/referring to a column in data.table?
    Loaddemodatalibrary(data.table)flights=fread("https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv")flightsSelectonesinglecolumnSupposeIwanttoselectthefirstcolumnyear.flights[,1]#retu......
  • 构建简单CMake及vscode调试
    main.cpp#include<iostream>intmain(){intnum_a,num_b;num_a=10;num_b=20;std::cout<<"num_a="<<num_a<<std::endl;std::cout<<"num_b="<<num_b<<std......
  • An analysis of what are the drug targets for the treatment of systemic lupus ery
    Systemiclupuserythematosus(SLE)isanautoimmunediseasethatproduceslargeamountsofimmunecomplexesandautoantibodiesandcausesdamagetothekidneys,skin,joints,andcentralnervoussystem.CurrentSLEtreatmentismostlyglucocorticoid-ledd......
  • AtCoder Beginner Contest 215 H Cabbage Master
    洛谷传送门AtCoder传送门考虑第一问。发现这个东西长得很像二分图匹配,考虑建图,第\(i\)个盒子建\(b_i\)个左部点,第\(i\)个球建\(a_i\)个右部点,每个盒子的每个点往可以放的球的每个点连边。显然要求能被满足等价于,这个二分图存在一个左部点的完全匹配。因为一个盒子的......
  • Spartacus Storefront 里如何在 SmartEdit 访问环境下暂时禁用 Early login
    关于SpartacusEarlylogin的功能,即如果当前客户没有登录,则显示loginpage.而不是显示原始页面。有的客户期望Spartacus在SmartEdit环境下预览时,暂时禁掉这个功能。首先,开发人员应该分析与需求相关的所有后果并对安全威胁进行建模,然后考虑是否接受它们,例如:某些功能页......
  • 在mac上使用不同的latex中文字体并修改字号
    参考:Mac中使用LaTeX的中文字体出现PackagefontspecError:Thefont“宋体“cannotbefound.解决方案修改全文字体:\setCJKmainfont{STSong}%衬线字体\setCJKsansfont{STHeitiSC-Light}%serif是有衬线字体sansserif无衬线字体。#试下来好像只有这个有效\setCJKmonofont......