grep:正则表达式,文本过滤工具,能够实现以指定的"模式(Pattern)"逐行搜索文件中的内容,并将匹配到的行显示出来.

模式:是由正则表达式的元字符,其他字符组合起来的匹配字符。

每一类正则表达式本身的表达式是需要用户自己去写的,但表达式的元字符都有着固定的或者特定的意义,我们可以根据自己的需要去理解或者组合字符,生成我们需要的模式

 -v:显示不被模式匹配到的行,invert-match

-i:在做模式匹配的时候不区分大小写ignore-case

-o:只显示匹配到的串,而非默认显示匹配到的行,only-matching

-A 数字:A=after,显示到匹配到的行后,还显示每一个匹配项下面*行的内容

-B 数字:before,前*行

-C 数字:context,上下文*行

-E:扩展的正则表达式

例子:

 [root@lbg test]# grep -o 'root' /etc/passwd      --只显示字段,不显示整行。

[root@lbg test]# grep  -A 1 'root' /etc/passwd --显示该行和下一行内容

[root@lbg test]# grep  -B 2 'root' /etc/passwd  --显示该行和其前两行内容。

1.字符匹配( . [] [^] [:space:] [:punct:])

  . 匹配任意单个字符(制表符,空格,标点,字母,数 字,其他符号)

[] 匹配指定范围内的任意单个字符

[^] 指定范围外的单个字符

[:space:] 匹配空白字符,包括空格,tab,

[:punct:] 标点符号(用法同空白字符)

例子:

[root@lbg test]# grep 'r[oa]t' /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
sshd:x:74:74:Privilege-separated  SSH:/var/empty/sshd:/sbin/nologin
2.次数匹配
 * (贪婪模式) 做次数匹配,匹配*前面的字符0,1或多次,只表示次数,不表示字符

? 只做次数匹配,0或1次,写法是:  \?

{m,n} 最少m次,最多n次    写法为:   \{m,n\}

用{m,n}时可以没有上限,但下限一定要有. 且 ?和{}都要加\.

例子:

 [root@lbg test]# cat 1
ab
a b
a  b
a    b
[root@lbg test]# grep 'a b' 1  --匹配1个空格
a b
[root@lbg test]# grep 'a *b' 1  --匹配0及以上的空格
ab
a b
a  b
a   b
a    b
[root@lbg test]# grep 'a \?b' 1 --匹配0或1个空格
ab
a b
[root@lbg test]# grep 'a \{2,3\}b' 1 ---匹配2或3个空格
a  b
a   b
[root@lbg test]# grep 'a \{2,\}b' 1  --匹配2个及以上空格
a  b
a   b
a    b
3.锚定符<>^$
 \<                      锚定词首       ####找到以r..t开头的内容  \

\>         锚定词尾          ###   r..t\>

^ 脱字符     行首锚定

$         行尾锚定        ##### root$       -->必须以root结尾

例子:

[root@lbg test]# grep '\

root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@lbg test]# grep 'ot\>' /etc/passwd   ---ot结尾的单词
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
setroubleshoot:x:993:988::/var/lib/setroubleshoot:/sbin/nologin

[root@lbg test]# grep '^ro' /etc/passwd  --以ro开头的行
root:x:0:0:root:/root:/bin/bash

[root@lbg test]# grep 'bash$' /etc/passwd  --以bash结尾的行

4.大括号的使用:在复制较长路径的文件并重命名时可使用大括号
 [root@lbg test]# ls                      ---无文件
[root@lbg test]# touch a             --创建文件a
[root@lbg test]# cp /test/a{,1}     --将a文件复制,并在其原路径下重命名为a1.
[root@lbg test]# ls
a  a1
5.wc命令:统计作用。(word count)
 wc [options]...  file_name

-l 仅显示行数(line)     -w  仅显示单词数(word)        -c  仅显示字节数(char)

单独的wc显示的信息依次是:行数 单词数 字节数  文件名

例子:

[root@lbg test]# cat a
how do you do
how do you do
[root@lbg test]# wc a        ---显示4种信息
 2  8 28 a
[root@lbg test]# wc -l a    --显示行数
2 a
[root@lbg test]# ls /test 
a  b  c  d
[root@lbg test]# ls /test | wc -l      ----使用wc统计目录下文件的个数
4
6.tr命令:转换显示的结果。
 tr:转换字符或者删除字符(tr -d '字符集合'   --delete )

tr '集合1'  '集合2'       --将集合1里的内容按集合2对应位置的内容替换显示出来。

例子:

 [root@lbg test]# echo 'abcdabcd' |tr 'ac' '13'     --两边集合一一对应的情况
1b3d1b3d
[root@lbg test]# echo 'abcdabcd' |tr 'acd' '13'    --集合1多于集合2的情况
1b331b33
[root@lbg test]# echo 'abcdabcd' |tr 'acd' '1234' --集合1少于集合2的情况
1b231b23
[root@lbg test]# echo 'abcdabcd' |tr 'a-z' 'A-Z'   --大小写转换
ABCDABCD
[root@lbg test]# echo 'abcdabcd' |tr -d 'ab'      ---删除字符
cdcd
7.cut:剪切
 -c :按照字符数量切 (characters)

-d :按指定分隔符切(delimiter 定界符)

-f:指定要显示的字段  (file)

单个数字-->一个字段

逗号分隔的多个数字-->指定多个离散字段

-  -->连续字段,3-5表示3到5字段

例子:

 [root@lbg test]# echo 'there are many dogs'|cut -d ' ' -f 2       --按空格切
are
[root@lbg test]# echo 'there are many dogs'|cut -d ' ' -f 2,4  --第2个和第4个
are dogs
[root@lbg test]# echo 'there are many dogs'|cut -d ' ' -f 2-4  --2到4个
are many dogs
[root@lbg test]# echo 'there are many dogs'|cut -d m -f  1  --以m切割
there are 
[root@lbg test]# echo 'there are many dogs'|cut -d m -f  2  --以m切割
any dogs
[root@lbg test]# echo 'how do you do'|cut -c 2-5   ---取第2到第5个字符
ow d
8.sort排序: sort [options] file ...
   -f:忽略字符大小写(ignore-case)

-n:对数值进行排序 //Sort 默认字符排序  加,-n 数字排序.

-r : 逆序输出

-t:指定分隔符

-k:基于哪个字段进行排序  (key)

-u:uniq,重复的行只显示一行 (unique)

例子:

 [root@lbg test]# cut -d : -f 3 /etc/passwd |sort -n
[root@lbg test]# cat a
234
123
234
[root@lbg test]# sort -u a
123
234
[root@lbg test]# sort -n  a
123
234
234
[root@lbg test]# sort -n  -u a
123
234

9.uniq:去重复行。

   -c:统计每一行出现的次数(count)

-d:仅显示重复过的行

-u:仅显示未重复行

注意uniq去重,认定是连续的才是重复的.不是连续的不会去重.

例子:

 [root@lbg test]# cat a
234
234
123
234
[root@lbg test]# uniq a
234
123
234
[root@lbg test]# sort a | uniq -c
  1     123
  3     234
[root@lbg test]# sort -u -n a
123
234

10.小括号向前引用功能

\1--引用从左到右的第一个括号内范围.

\2--引用从左到右的第二个括号内范围.

例子:

[root@lbg test]# cat a
he love his lover
she like her liker
[root@lbg test]# grep 'l..e.*e' a
he love his lover
she like her liker
[root@lbg test]# grep '\(l..e\).*\1' a  ---与命令grep 'l..e.*e' a相同
he love his lover
she like her liker
[root@lbg test]# grep '\(l\(..\)e\).*\1' a  ---与命令grep 'l..e.*e' a相同
he love his lover
she like her liker
[root@lbg test]# grep 'l..e.*l..'   a          
he love his lover
she like her liker
[root@lbg test]# grep '\(l\(..\)e\).*\2' a   --与grep 'l..e.*l..'   a 相同
he love his lover
she like her liker

转载于:https://www.cnblogs.com/lbg-database/p/10109956.html

grep/字符/次数匹配/锚定符/小大括号/wc/tr/cut/sort/uniq相关推荐

  1. shell脚本——grep cut sort uniq tee diff paster tr等小工具的使用方法

    shell脚本的一些小工具的使用方法 grep 语法和选项 实例 cut 语法和选项 实例 sort 语法和选项 实例 uniq 语法和选项 实例 tee 语法和选项 实例 diff 语法和选项 实例 ...

  2. linux 命令行 过滤,Linux常用文本过滤命令(find grep wc awk sed sort uniq split)

    都支持regular expression 1. find-name 按名字查找 -perm 根据权限查找 -ctime –n +m 根据创建时间查找,-n n天内,+n n天之前 -mtime –n ...

  3. java 匹配任意字符_正则表达式匹配任意字符(包括换行符)

    正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符.但有时候我们需要匹配包括换行符在内的字符,经过一番搜索,发现了几种正则表达式匹配任意字符 ...

  4. php正则匹配任意字符串,正则表达式匹配任意字符(包括换行符)

    正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符.但有时候我们需要匹配包括换行符在内的字符,经过一番搜索,发现了几种正则表达式匹配任意字符 ...

  5. python正则匹配任意字符_Python 匹配任意字符(包括换行符)的正则表达式写法...

    Python 匹配任意字符(包括换行符)的正则表达式写法 想使用正则表达式来获取一段文本中的任意字符,写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现 ...

  6. VS Opencv 字符模板匹配小实例

    初步认识 #include "opencv2/imgcodecs.hpp" #include "opencv2/highgui.hpp" #include &q ...

  7. linux grep跨行文本匹配,grep跨行匹配

    grep -Pazo '\supstream [\w].com[\s\S]*?}$' nginx.conf 输出结果为: upstream ww.com { server keepalive 50; ...

  8. grep 正则表达式 如何匹配 中括号

    grep 正则表达式如何匹配中括号? How grep regex matches square brackets? 文章目录 1. 匹配中括号,例如匹配 `String[] args` 2. 匹配大 ...

  9. grep与正则表达式匹配

    1. 典型的应用场合:grep.egrep检索文本行 使用不带-E 选项的grep时,支持基本正则匹配.例如,'abc'关键词检索,'^abc' 匹配行首,'abc$' 匹配行尾 grep 'bash ...

  10. 正则表达式学习笔记004--连字符和范围描述符的认识与应用

    正则表达式学习笔记004--连字符和范围描述符的认识与应用 以前写的课程都没有附上源码,很抱歉! 交流群1:251572072 交流群2:170933152 也可以自己下载: 正则表达式学习笔记004 ...

最新文章

  1. java 方法里面定义接口_java – 当接口A在其方法签名中定义接口B时
  2. 02 使用百度地图获得当前位置的经纬度
  3. jquery的html,text,val的区别
  4. 30个创意出色的非常实用的jquery框架插件-(视觉大背景,瀑布流效果)
  5. java处理最后一周_Java获取某年某周的最后一天
  6. Objective-C基础笔记(3)OC的内存管理
  7. java的自增自减_Java中自增和自减操作符(++/--)的那些事
  8. Windows Phone 7.1 “芒果” SDK Beta 下载地址
  9. 更改文件和目录(及子目录)的拥有者
  10. vue js table colspan rowspan
  11. vue请求数据传给子组件_vue.js基础,父组件如何向子组件传递数据「607」
  12. 【zookeeper】zookeeper 的监听机制
  13. Python函数调用(2)
  14. 超材料技术行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  15. css选择器([class*= icon-], [class^=icon-] 的区别)
  16. 2013蓝桥杯C++B:三部排序(指针双向扫描)
  17. JavaScript闭包函数的理解
  18. Android学习笔记之如何将数据保存到SDCard
  19. mescroll.js -- 精致的下拉刷新和上拉加载js框架
  20. Python爬虫爬取网页上的所有图片

热门文章

  1. 伯尔尼大学计算机专业,2021年QS世界大学学科排名发布,瑞士大学表现出色!
  2. python中turtle库直线怎么画_Python基础图形绘制库——turtle
  3. Qt利用paintEvent绘制双Y轴坐标折线图
  4. nodejs+python+springboot+php+vue 智能在线考试阅卷系统
  5. Oracle函数实现表映射实体类
  6. 【视频】经历五个双11,逼死50个设计师,今年没人肯干,怎么办?
  7. 在VMware上安装Ubuntu14
  8. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 D psd面试 【LCS】
  9. Git从安装到使用全面详细教程(附下载地址)
  10. Web安全和软件安全相关论文出现的术语翻译整理(持续更新)