Shell自动化运维脚本编程练习(二)

第一题

  • 显示/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>测试结果

image-20230902081849867

第二题

  • 找出"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>测试结果

image-20230902082418405

第三题

  • 在/etc/fstab文件中不以#开头的行的行首增加#号

1>涉及知识

  • 在基准正则表达式中。[^]表示:不匹配方括号内的单字符

  • -i:直接编辑原文件,而不是由屏幕输出,默认不对原文件进行操作

  • 文本替换的格式:

sed  -参数  '行范围s/旧字符串/新字符串/替换标记'  文件名

2>编辑

[root@server ~]# sed 's/^[^#]/#/' /etc/fstab

3>测试结果

image-20230904223134774

第四题

  • 删除/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>测试结果

image-20230904221830378

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值