shell ——Day 4
1、grep程序与正则表达式
Linux下有文本处理三剑客---grep sed awk
grep --行过滤器
sed ---行编辑器(流编辑器)
awk ---报告生成器
grep作用:只做文本过滤,挑选出满足条件的内容:在cpu中运行
用法:group [OPTIONS] PATTERN [E...]
扩展:命令格式
command[选项][参数]
xl create xl 挂起 xl start xl console
command sub camm[选项][参数]
grep 常用选项:
-v 取反
-E指定使用扩展正则表达式(默认匹配时使用标准正则表达式)
-i 忽略大小写
-c统计匹配行数
-o 只显示匹配内容
-n 显示行号
-w固定单词(词首,词尾锚定)
PATTERN
模式匹配 grep默认支持正则表达式;
globbing 文件通配符:* ? [] [^] 字符集
经常用来匹配文件名
globbing 文件通配符:* ? [] [^] 字符集
经常用来匹配文件名
正则表达式 -- 一般用来匹配文件内容;
每一种语言所支持的正则表达式引擎是不同的,其中Perl语言的正则表达式引擎的查找效率是最高的;
1、字符匹配
. 代表任意单个字符 a.b abb a%b a*b aab acb
[] 表示中括号里面的任意一个字符 a[cd]b acb/adb
[^] 表示对中括号的内容进行取反 a[^0-9]b a9b aab
2、次数匹配
. 代表任意单个字符 a.b abb a%b a*b aab acb
[] 表示中括号里面的任意一个字符 a[cd]b acb/adb
[^] 表示对中括号的内容进行取反 a[^0-9]b a9b aab
2、次数匹配
* 代表前面一个字符出现任意次数(包括0次) a*b aaaab ab b
\? 代表匹配前面的一个字符 0次 或 1次
\+ 表示匹配前面的一个字符 1次 到 n次
\{n\} 匹配前面一个字符 n次
\{n,m\} 匹配前面的一个字符 n次 到 m次(m>n)
\{0,m\} 匹配前面的一个字符 0次 到 m次
\{m,\} 匹配前面一个字符 m次以上
\? 代表匹配前面的一个字符 0次 或 1次
\+ 表示匹配前面的一个字符 1次 到 n次
\{n\} 匹配前面一个字符 n次
\{n,m\} 匹配前面的一个字符 n次 到 m次(m>n)
\{0,m\} 匹配前面的一个字符 0次 到 m次
\{m,\} 匹配前面一个字符 m次以上
例:grep --color= auto "a*b" 1.txt
vi 1.txt a aaab acb aab ab b
3、位置锚定
^ 锚定行首
$ 锚定行尾
空行表示:^$ ^[[:space:]]*$
$ 锚定行尾
空行表示:^$ ^[[:space:]]*$
例:取掉nginx.conf中的空行
[root@lsl ~]#vi 3.txt //在这里写一些东西
[root@lsl ~]# grep -v "^[[:space:]]*#" 3.txt | grep -v "^$"
\b 放在词首就是锚定词首,放在词尾就是锚定词尾( \bword\b wordcount countword )
\< 锚定词首
\> 锚定词尾
-w 指定一个固定单词;
\< 锚定词首
\> 锚定词尾
-w 指定一个固定单词;
例:锚定词尾
[root@lsl ~]#grep "h\>" 3.txt
4、分组
word* wordddddd wordwordwordword
\(\) \(word\)* 将前面的字符串视为一个整体,去进行0次或多次匹配
\(\) \(word\)* 将前面的字符串视为一个整体,去进行0次或多次匹配
后向引用
\(手势\)识别的原理并不复杂,它通过硬件\(捕获\)自然信号,就像相机\2图片\(信息\)那样,然后通过软件算法计算得到手的位置、姿态、
\(手势\)识别的原理并不复杂,它通过硬件\(捕获\)自然信号,就像相机\2图片\(信息\)那样,然后通过软件算法计算得到手的位置、姿态、
\1等,处理成计算机可以理解\3。
示例:\(ab+\(xy\)*\) * 其中 \1 = ab+\(xy\)* , \2 = xy
abxyabxyabxy abxyxyabxyxy ab
abxyabxyabxy abxyxyabxyxy ab
练习:
1、显示/proc/meminfo文件中大小s开头的行
2、显示/etc/passwd文件中不以/bin/bash结尾的行
3、显示/etc/passwd文件中UID号最大的用户的用户名
4、如果用户root存在,显示其默认的shell程序
5、找出/etc/passwd中的两位或三位数
6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行
[root@lsl ~]# grep "^[[:space:]]\+.*[^[:space:]]$" /etc/rc.d/rc.sysinit
7、找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行
8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):
而后找出/etc/passwd文件中用户名同shell名的行
useradd bash
useradd testbash
useradd basher
useradd -s /sbin/nologin nologin
useradd testbash
useradd basher
useradd -s /sbin/nologin nologin
9、MAC地址如何匹配
愿你以后风生水起,敬我余生波澜不惊