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 文件通配符:* ? []  [^]  字符集
经常用来匹配文件名
正则表达式 -- 一般用来匹配文件内容;
每一种语言所支持的正则表达式引擎是不同的,其中Perl语言的正则表达式引擎的查找效率是最高的;
  1、字符匹配
    .  代表任意单个字符 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次以上
例:grep --color= auto "a*b" 1.txt
vi 1.txt
a
aaab
acb
aab
ab
b

 

3、位置锚定
^  锚定行首
$  锚定行尾
空行表示:^$   ^[[:space:]]*$
例:取掉nginx.conf中的空行
[root@lsl ~]#vi 3.txt  //在这里写一些东西

[root@lsl ~]# grep -v "^[[:space:]]*#" 3.txt | grep -v "^$"

   \b 放在词首就是锚定词首,放在词尾就是锚定词尾( \bword\b  wordcount countword )
   \<  锚定词首
   \>  锚定词尾
  -w 指定一个固定单词;
例:锚定词尾
[root@lsl ~]#grep "h\>" 3.txt

 

 4、分组      

word*  wordddddd   wordwordwordword
   \(\)   \(word\)*  将前面的字符串视为一个整体,去进行0次或多次匹配
   后向引用 
   \(手势\)识别的原理并不复杂,它通过硬件\(捕获\)自然信号,就像相机\2图片\(信息\)那样,然后通过软件算法计算得到手的位置、姿态、
   \1等,处理成计算机可以理解\3。
   示例:\(ab+\(xy\)*\) *  其中 \1 = ab+\(xy\)* , \2 = xy  
    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
 
 
9、MAC地址如何匹配
posted @ 2019-09-19 21:00  Block翊树  阅读(266)  评论(0编辑  收藏  举报