linux grep使用以及grep使用练习

一、作业(练习)内容:

1、总结本此课程中所涉及命令的使用方法及相关示例展示

 Linux文本处理三剑客:                                                                                                                            
grep: 文本过滤工具;                                                                                                                              
  sed:文本编辑器(行);stream editor                                                                                    
  awk:文本报告生成器;Linux上awk的实现为gawk

 

 grep 【参数】【字符串或者正则表达式】【文件名....】

     -i 忽略大小写

     -c 显示被匹配到的行数

     -n 输出行号

     -v 反向选择,即找没有搜索字符串的行

     -o 仅显示匹配到的内容

     -w 匹配单词

     -A # 连同匹配行的下#行一并显示,#代表任意数字

      -B # 连同匹配行的上#行一并显示,#代表任意数字

     -C # 连同匹配行的上下#行一并显示,#代表任意数字

     -R-r 递归搜索目录或子目录下匹配的字所在文件(可配合find命令

     -E 相当于egrep 支持扩展的正则表达式

     -F 相当于fgrep 不支持正则表达式

     --color对匹配的内容以颜色显示

 

 

2、总结基本正则表达式及扩展正则表达式

 

正则表达式: 默认匹配次数:贪婪模式,尽可能多的去匹配

. 匹配任意单个字符

\.表示.本身 \逃逸符

* 匹配其前面的字符任意次可为0

.* 任意长度的任意字符

\? 匹配其前面字符1次或0

x\{m\}:匹配其前面的字符“x”m(精确匹配)

x\{m,\}:匹配其前面的字符“x”至少m

x\{m,n\}:匹配其前面的字符“x”至少m次,至多n

\{1,\} 1次至无上限 \{0,3\}至少3

^ 锚定行首,此字符后面的任意内容必须出现在行首

$ 锚定行尾,次字符前面的任意内容必须出现在行尾

^$表示空行

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

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

\< 其后面的任意字符必须作为单词的首部出现

\> 其前面的任意字符必须作为单词的尾部出现

\<\> 锚定单词例如 \<root\>

纯数字 [[:digit:]][0-9]

小写字母 [[:lower:]][a-z]

大写字母 [[:upper:]][A-Z]

大小写字母 [[:alpha:]][a-zA-Z]

数字加字母 [[:alnum:]][0-9a-zA-Z]

空白字符 [[:space:]] 非空白字符[^[:space:]]

标点符号 [[:punct:]]

\d 匹配任何十进制数,相当于[0-9] -P选项加上

\D 匹配任何非数字字符,相当于[^0-9] -P选项加上

\s 匹配任何空白字符,

\S 匹配任何非空白字符,

\w 匹配任何字母数字字符,相当于[a-zA-Z0-9]

\W 匹配任何非字母数字字符,相当于[^a-zA-Z0-9]

\\ 匹配"\"

\( \) 分组后项引用 \1 引用第一个左括号以及与之对应的右括号所包括的所有内容。 \2 \3 …

 

扩展正则表达式中增加了几个与正则表达式有区别的新内容:

+ 匹配其前面的字符至少1 \{1,\}正则中近似

匹配紧挨在其前面的字符0次或1 \?正则中近似

{m,n} 匹配前面字符至少m次至多n {1}表示1至无限 {0,3}表示0-3

()分组 \1 \2 \3 …

| 或者

 

3、显示/etc/passwd文件中以bash结尾的行

wKioL1Xgfnigch5AAABpMXNAUfQ722.jpg

4、显示/etc/passwd文件中的两位数或三位数

wKioL1XghE_h1KApAAIrlMNQpNg696.jpg

5、显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行

 

wKiom1XghWLzNO7iAACF6B70uSs768.jpg

或者:

wKioL1Xgh32CxpBjAACcuyccHUg718.jpg

 

6、添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行

 

wKioL1Xgk5DSYHPEAAA5clloQQA951.jpg

wKiom1XgkXWQs7NuAAA-8qApU_8664.jpg

 wKiom1XkNfiTr-GjAAE26zu_H9w936.jpg

 

7、显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)

wKioL1XkPOyBZB8JAADdxtc32oA334.jpg

8、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行



9、使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名


10、找出ifconfig命令执行结果中1-255之间的数字


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章