^ 行首
$ 行尾
. 除了换行符以外的任意单个字符
* 前导字符的零个或多个
.* 所有字符
[] 字符组内的任一字符
[^] 对字符组内的每个字符取反(不匹配字符组内的每个字符)
^[^] 非字符组内的字符开头的行
[a-z] 小写字母
[A-Z] 大写字母
[a-Z] 小写和大写字母
[0-9] 数字
\< 单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词
\> 单词尾

扩展正则 sed 加 -r 参数 或转义
grep 加 -E 或 egrep 或转义
AWK 直接支持 但不包含{n,m}
可以使用--posix支持
[root@MiWiFi-R3-srv ~]#  awk '/ro{1,3}/{print}' /etc/passwd
[root@MiWiFi-R3-srv ~]#  awk --posix '/ro{1,3}/{print}' /etc/passwd

sed -n '/roo\?/p' /etc/passwd 
sed -rn '/roo?/p' /etc/passwd
? 前导字符零个或一个
+ 前导字符一个或多个
abc|def abc或def
a(bc|de)f abcf 或 adef
x\{m\} x出现m次
x\{m,\} x出现m次至多次(至少m次)
x\{m,n\} x出现m次至n次

posix定义的字符分类

[:alnum:] Alphanumeric characters.
匹配范围为 [a-zA-Z0-9]
[:alpha:] Alphabetic characters.
匹配范围为 [a-zA-Z]
[:blank:] Space or tab characters.
匹配范围为 空格和TAB键
[:cntrl:] Control characters.
匹配控制键 例如 ^M 要按 ctrl+v 再按回车 才能输出
[:digit:] Numeric characters.
匹配所有数字 [0-9]
[:graph:] Characters that are both printable and visible. (A space is print-
able, but not visible, while an a is both.)
匹配所有可见字符 但不包含空格和TAB 就是你在文本文档中按键盘上能用眼睛观察到的所有符号
[:lower:] Lower-case alphabetic characters.
小写 [a-z]
[:print:] Printable characters (characters that are not control characters.)
匹配所有可见字符 包括空格和TAB
能打印到纸上的所有符号
[:punct:] Punctuation characters (characters that are not letter, digits, con-
trol characters, or space characters).
特殊输入符号 +-=)(*&^%$#@!~`|\"'{}[]:;?/>.<,
注意它不包含空格和TAB
这个集合不等于^[a-zA-Z0-9]
[:space:] Space characters (such as space, tab, and formfeed, to name a few).

[:upper:] Upper-case alphabetic characters.
大写 [A-Z]
[:xdigit:] Characters that are hexadecimal digits.
16进制数 [0-f]

使用方法:
[root@seker ~]# grep --color '[[:alnum:]]' /etc/passwd

作业二:grep作业(正则表达式及字符处理) 目标文件/etc/passwd,使用grep命令或egrep
1.显示出所有含有root的行:

09 grep、正则表达式和sed

 


2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:

09 grep、正则表达式和sed

3. 显示出有多少行含有nologin。

09 grep、正则表达式和sed

4.显示出那些行含有root,并将行号一块输出。

 09 grep、正则表达式和sed

 


5.显示出文件中

09 grep、正则表达式和sed

 


6.新建用户
abominable
abominate
anomie
atomize
编写正则表达式,将他们匹配出来

09 grep、正则表达式和sed

 


7.建四个用户
Alex213sb
Wpq2222b
yH438PIG
egon666
egon

过滤出用户名组成是字母+数字+字母的行

09 grep、正则表达式和sed

 


8.显示出/etc目录下所有包含root的文件名

09 grep、正则表达式和sed

 


9. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行

09 grep、正则表达式和sed

 


作业三:Sed作业:以/etc/passwd文件为模板

1,删除文件每行的第一个字符。

09 grep、正则表达式和sed

2,删除文件每行的第二个字符。

09 grep、正则表达式和sed

3,删除文件每行的最后一个字符。

09 grep、正则表达式和sed

4,删除文件每行的倒数第二个字符。

09 grep、正则表达式和sed

5,删除文件每行的第二个单词。

09 grep、正则表达式和sed

6,删除文件每行的倒数第二个单词。

09 grep、正则表达式和sed

7,删除文件每行的最后一个单词。

09 grep、正则表达式和sed

 

8,交换每行的第一个字符和第二个字符。

09 grep、正则表达式和sed

9,交换每行的第一个字符和第二个单词。

09 grep、正则表达式和sed

10,交换每行的第一个单词和最后一个单词。

09 grep、正则表达式和sed

11,删除一个文件中所有的数字。

09 grep、正则表达式和sed

12,删除每行开头的所有空格。

09 grep、正则表达式和sed

13,用制表符替换文件中出现的所有空格。

09 grep、正则表达式和sed

14,把所有大写字母用括号()括起来。

sed -r 's/[A-Z]/(&)/g' /etc/passwd

09 grep、正则表达式和sed

15,打印每行3次。

09 grep、正则表达式和sed

16,只显示每行的第一个单词。

09 grep、正则表达式和sed

17,打印每行的第一个单词和第三个单词。

09 grep、正则表达式和sed

18,用命令获取格式为 mm/yy/dd 的日期格式,结合管道,将其换成 mm;yy;dd格式

 09 grep、正则表达式和sed

 

 

相关文章:

  • 2022-12-23
  • 2021-12-13
  • 2021-09-05
  • 2021-06-28
  • 2021-12-12
  • 2021-08-15
猜你喜欢
  • 2022-12-23
  • 2021-10-20
  • 2021-12-31
  • 2022-12-23
  • 2021-11-27
  • 2022-12-23
  • 2022-01-20
相关资源
相似解决方案