grep/字符/次数匹配/锚定符/小大括号/wc/tr/cut/sort/uniq
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 |
* (贪婪模式) 做次数匹配,匹配*前面的字符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 |
\< 锚定词首 ####找到以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@lbg test]# grep 'bash$' /etc/passwd --以bash结尾的行 |
[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 |
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 |
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 |
-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 |
-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相关推荐
- shell脚本——grep cut sort uniq tee diff paster tr等小工具的使用方法
shell脚本的一些小工具的使用方法 grep 语法和选项 实例 cut 语法和选项 实例 sort 语法和选项 实例 uniq 语法和选项 实例 tee 语法和选项 实例 diff 语法和选项 实例 ...
- 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 ...
- java 匹配任意字符_正则表达式匹配任意字符(包括换行符)
正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符.但有时候我们需要匹配包括换行符在内的字符,经过一番搜索,发现了几种正则表达式匹配任意字符 ...
- php正则匹配任意字符串,正则表达式匹配任意字符(包括换行符)
正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符.但有时候我们需要匹配包括换行符在内的字符,经过一番搜索,发现了几种正则表达式匹配任意字符 ...
- python正则匹配任意字符_Python 匹配任意字符(包括换行符)的正则表达式写法...
Python 匹配任意字符(包括换行符)的正则表达式写法 想使用正则表达式来获取一段文本中的任意字符,写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现 ...
- VS Opencv 字符模板匹配小实例
初步认识 #include "opencv2/imgcodecs.hpp" #include "opencv2/highgui.hpp" #include &q ...
- linux grep跨行文本匹配,grep跨行匹配
grep -Pazo '\supstream [\w].com[\s\S]*?}$' nginx.conf 输出结果为: upstream ww.com { server keepalive 50; ...
- grep 正则表达式 如何匹配 中括号
grep 正则表达式如何匹配中括号? How grep regex matches square brackets? 文章目录 1. 匹配中括号,例如匹配 `String[] args` 2. 匹配大 ...
- grep与正则表达式匹配
1. 典型的应用场合:grep.egrep检索文本行 使用不带-E 选项的grep时,支持基本正则匹配.例如,'abc'关键词检索,'^abc' 匹配行首,'abc$' 匹配行尾 grep 'bash ...
- 正则表达式学习笔记004--连字符和范围描述符的认识与应用
正则表达式学习笔记004--连字符和范围描述符的认识与应用 以前写的课程都没有附上源码,很抱歉! 交流群1:251572072 交流群2:170933152 也可以自己下载: 正则表达式学习笔记004 ...
最新文章
- java 方法里面定义接口_java – 当接口A在其方法签名中定义接口B时
- 02 使用百度地图获得当前位置的经纬度
- jquery的html,text,val的区别
- 30个创意出色的非常实用的jquery框架插件-(视觉大背景,瀑布流效果)
- java处理最后一周_Java获取某年某周的最后一天
- Objective-C基础笔记(3)OC的内存管理
- java的自增自减_Java中自增和自减操作符(++/--)的那些事
- Windows Phone 7.1 “芒果” SDK Beta 下载地址
- 更改文件和目录(及子目录)的拥有者
- vue js table colspan rowspan
- vue请求数据传给子组件_vue.js基础,父组件如何向子组件传递数据「607」
- 【zookeeper】zookeeper 的监听机制
- Python函数调用(2)
- 超材料技术行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- css选择器([class*= icon-], [class^=icon-] 的区别)
- 2013蓝桥杯C++B:三部排序(指针双向扫描)
- JavaScript闭包函数的理解
- Android学习笔记之如何将数据保存到SDCard
- mescroll.js -- 精致的下拉刷新和上拉加载js框架
- Python爬虫爬取网页上的所有图片
热门文章
- 伯尔尼大学计算机专业,2021年QS世界大学学科排名发布,瑞士大学表现出色!
- python中turtle库直线怎么画_Python基础图形绘制库——turtle
- Qt利用paintEvent绘制双Y轴坐标折线图
- nodejs+python+springboot+php+vue 智能在线考试阅卷系统
- Oracle函数实现表映射实体类
- 【视频】经历五个双11,逼死50个设计师,今年没人肯干,怎么办?
- 在VMware上安装Ubuntu14
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 D	psd面试 【LCS】
- Git从安装到使用全面详细教程(附下载地址)
- Web安全和软件安全相关论文出现的术语翻译整理(持续更新)