第一题
-
显示/etc/passwd文件中以nologin结尾的行
1>基本正则表达式常见元字符
| 元字符 | 说明 |
|---|---|
| ^ | 以某个字符开头 或 行首 |
| $ | 以某个字符结尾 或行尾 |
| . | 匹配任意单字符 |
| * | 对前一项进行0次或者多次重复匹配 |
| {m,n} | 将前一项字符重复m-n次,{m,},{,n},{m,n} |
| [] | 对方括号内的单字符进行匹配 |
| [^] | 不匹配方括号内的单字符 |
| ^[] | 匹配以某个字符开头的行 |
| () | 定义一个子表达式 |
| 词首【<或\b】和词尾锚定【>或者\b】 | 其后面的任意字符必须作为单词首部出现;其前面的任意字符必须作为单词尾部出现 |
| \ | 转义字符,让一些特殊符号失效 |
2>编辑
[root@server ~]# grep nologin$ /etc/passwd
或者
[root@server ~]# awk -F ":" '/nologisn$/{print $0}' /etc/passwd
3>测试结果

第二题
-
找出"nestat -tan"命令的结果中以‘LISTEN’后跟0或多个空白字符结尾的行
1>基本正则表达式POSIX字符类
| 正则表达式 | 描述 | 示例 |
|---|---|---|
| [:alnum:] | 匹配任意一个字母或数字字符 | [[:alnum:]]+ |
| [:alpha:] | 匹配任意一个字母字符(包括大小写字母) | [[:alpha:]] |
| [:blank:] | 空格与制表符(横向和纵向) | [[:blank:]]* |
| [:digit:] | 匹配任意一个数字字符 | [[:digit:]]? |
| [:lower:] | 匹配小写字母 | [[:lower:]] |
| [:upper:] | 匹配大写字母 | ([[:upper:]]+)? |
| [:punct:] | 匹配标点符号 | [[:punct:]] |
| [:space:] | 匹配一个包括换行符、回车等在内的所有空白符 | [[:space:]]+ |
| [:graph:] | 匹配任何一个可以看得见的且可以打印的字符 | [[:graph:]] |
| [:xdigit:] | 任何一个十六进制数(即:0-9,a-f,A-F) | [[:xdigit:]]+ |
| [:cntrl:] | 任何一个控制字符(ASCII字符集中的前32个字符) | [[:cntrl:]] |
| [:print:] | 任何一个可以打印的字符 | [[:print:]] |
2>编辑
[root@server ~]# netstat -tan | grep "LISTEN[[:space:]]*$"
或者
[root@server ~]# netstat -tan | grep "LISTEN[[:space:]]*\"
或者
[root@server ~]# netstat -tan | awk '/LISTEN[[:space:]]*\>/{print $0}'
3>测试结果

第三题
-
在/etc/fstab文件中不以#开头的行的行首增加#号
1>涉及知识
-
在基准正则表达式中。[^]表示:不匹配方括号内的单字符
-
-i:直接编辑原文件,而不是由屏幕输出,默认不对原文件进行操作
-
文本替换的格式:
sed -参数 '行范围s/旧字符串/新字符串/替换标记' 文件名
2>编辑
[root@server ~]# sed 's/^[^#]/#/' /etc/fstab
3>测试结果

第四题
-
删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
1>涉及知识
-
本题使用文本替换删除,格式:
sed -参数 '行范围s/旧字符串/新字符串/替换标记' 文件名
-
-r:使用扩展正则表达式
-
-i:直接编辑原文件,而不是由屏幕输出,默认不对原文件进行操作
-
扩展正则表达式
| 元字符 | 说明 |
|---|---|
| ? | 将前一项字符进行0次或者1次的重复匹配 |
| + | 将前一项进行1次或者多次的重复匹配 |
| (|) | 匹配|符号左边或者右边的字符 |
2>编辑
[root@server ~]# sed -r 's/^#[[:space:]]?//' /etc/fstab
或者
[root@server ~]# sed -r "s/(#|#[[:space:]]+)//" /etc/fstab
3>测试结果

本文介绍了如何使用正则表达式配合grep,awk,和sed命令在Linux环境下处理passwd,netstat和fstab文件,包括查找特定行尾、行首标记,以及文本替换操作,展示了在命令行中处理文本的技巧。
535

被折叠的 条评论
为什么被折叠?



