Shell脚本应用(四)

一、 基础正则表达式:
1、 基础正则表达式示例:
1) 查找特定字符(-n表示显示行号,-i表示不区分大小写,-v表示反向选择)
在这里插入图片描述
在这里插入图片描述
2) 利用中括号“[ ]”来查找集合字符
查找匹配“i” 或者“o”的字符:
在这里插入图片描述
查找“oo”前面不是“w”的字符串:
在这里插入图片描述
查找“oo”前面不允许存在小写字母的行:
在这里插入图片描述
查找包含数字的行:

在这里插入图片描述
3) 查找行首“^”与行尾字符“$”
查找以小写字母开头的行:
在这里插入图片描述
查找不以字母开头的行:在这里插入图片描述
查找以“.”结尾的行:
在这里插入图片描述
4) 查找任意一个字符“.”与重复字符“*”
“.”代表任意一个字符:
在这里插入图片描述
查询包含至少两个o以上的字符:
在这里插入图片描述
查询以w开头d结尾,中间包含至少一个o的字符串:
在这里插入图片描述
查询以w开头d结尾,中间的字符可有可无的字符串:在这里插入图片描述
查找任意数字所在的行:
在这里插入图片描述
5) 查找连续字符范围“{ }”
在这里插入图片描述
查询以w开头d结尾,中间包含2-5个o的字符串:

在这里插入图片描述
查询以w开头d结尾,中间包含2个以上o的字符串:
在这里插入图片描述
2、 扩展正则表达式(egrep):
在这里插入图片描述

在这里插入图片描述
二、 文本处理器
1、 Sed
1) 输出符合条件的文本(p表示正常输出)
输出所有内容:
在这里插入图片描述
输出第3行:
在这里插入图片描述
输出所有奇数行,n表示读入下一行资料:
在这里插入图片描述
输出所有偶数行,n表示读入下一行资料:
在这里插入图片描述
输出第1-5行之间的奇数行:

在这里插入图片描述
输出第10行至文件尾之间的偶数行:
在这里插入图片描述
输出包含the的行:
在这里插入图片描述
输出以PI开头的行:
在这里插入图片描述
输出以数字结尾的行:
在这里插入图片描述
输出包含单词wood的行:
在这里插入图片描述
2) 删除符合条件的文本(d)
删除第3行:
在这里插入图片描述
删除第3-5行:
在这里插入图片描述
删除包含cross的行:
在这里插入图片描述
删除以小写字母开头的行:
在这里插入图片描述
删除以“.”结尾的行:
在这里插入图片描述
删除所有的空行:
在这里插入图片描述
3) 替换符合条件的文本:
在这里插入图片描述
4) 迁移符合条件的文本:
在这里插入图片描述
编写一个脚本实现“将第1-5行内容转移到第17行后”
vim opt.list

执行:sed -f opt.list test.txt
验证结果。
6)sed直接操作文件:
编写一本脚本,用来调整vsftpd服务配置:禁止匿名用户,但允许本地用户(也允许写入)。需要安装vsftpd包(安装包在linux系统安装光盘上)。脚本如下

#!/bin/bash
SAMPLE="/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf"
CONFIG="/etc/vsftpd/vsftpd.conf"
[ ! -e “$CONFIG.bak” ] && cp $CONFIG $CONFIG.bak
sed -e ‘/^anonymous_enable/s/YES/NO/g’ $SAMPLE > $CONFIG
sed -i -e ‘/^local_enable/s/NO/YES/g’ -e ‘/^write_enable/s/NO/YES/g’ $CONFIG
grep “listen” C O N F I G ∣ ∣ s e d − i ′ CONFIG || sed -i ' CONFIGsedialisten=YES’ C O N F I G s e d − i − e ′ CONFIG sed -i -e ' CONFIGsedieapam_service_name=vsftpd’ $CONFIG
sed -i -e ‘/one/s//#/’ $CONFIG
systemctl restart vsftpd
systemctl enable vsftpd
在这里插入图片描述

2、 awk工具
在这里插入图片描述
在这里插入图片描述
2) 按字段输出文本
在这里插入图片描述
3) 通过管道,双引号调用shell命令
在这里插入图片描述
DHCP自动安装脚本如下
#/bin/bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0 &> /dev/null
sed -i ‘/^BOOTPROTO/s/dhcp/static/’ /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i ‘/^ONBOOT/aIPADDR=192.168.1.10’ /etc/sysconfig/network-scripts/ifcfg-ens33
ifdown ens33 &> /dev/null
ifup ens33 &> /dev/null
mount /dev/cdrom /media &> /dev/null
cd /media/Packages
rpm -ivh dhcp-4.2.5-47.el7.centos.x86_64.rpm &> /dev/null
sed -i -e ‘5asubnet 192.168.1.0 netmask 255.255.255.0 {\nrange 192.168.1.100 192.168.1.200;\noption domain-name-servers 202.106.0.20,202.106.46.151;\noption routers 192.168.1.1;\n}’ /etc/dhcp/dhcpd.conf
systemctl start dhcpd
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值