设为首页 收藏本站
查看: 903|回复: 0

[经验分享] linux正则搭配sed的使用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-13 09:20:28 | 显示全部楼层 |阅读模式

1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
1
2
cp /etc/rc.d/rc.sysinit /tmp
sed -i 's/\(^[[:space:]]\)/#\1/g' /tmp/rc.sysinit



2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
1
sed  -i 's/^[[:space:]]\+//g' /tmp/grub.conf



3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
1
sed -i 's/^#[[:space:]]\+//g' /tmp/rc.sysinit



4、为/tmp/grub.conf文件中前三行的行首加#号;
1
sed -i '1,3s/\(^.\)/#\1/g' /tmp/rc.sysinit



5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
1
sed 's/enabled=0/enabled=1/g;s/gpgcheck=1/gpgcheck=2/g;' /etc/yum.repos.d/CentOS-Media.repo



6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201608300202
1
2
3
4
5
6
7
8
9
10
11
cat /home/backup/shell/crond_shell.sh
#!/bin/bash
#定义变量
Datetime=`date +\%Y\%m\%d\%H\%M`
Baname=etc-
Quanlj=$Baname$Datetime.tar.gz
#打包
tar czf  $Quanlj /etc >/dev/null
mv $Quanlj /backup
crontab -e
00 */4 * * * sh /home/backup/shell/crond_shell.sh >/dev/null



7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20160830
1
* * * * 2,4,6      /bin/cp /var/log/messages /backup/messages_logs/messages-`date +%Y%m%d`



注:这里的变量名为什么要写绝对路径呢,因为在定时任务执行的时候,你会发现,找不到这个命令的路径,但是手动执行又有,这点我也没明白为什么会这样。

8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
1
grep -E "^S" /proc/meminfo >>/stats/memory.txt



9、工作日的工作时间内,每两小时执行一次echo "howdy"
脚本编程练习
1
2
3
4
5
6
7
8
9
10
例子1:
cat /home/backup/shell/echo_shell.sh
#!/bin/bash
echo "howdy"
crontab -e
* */2 * * 1-5 sh /home/backup/shell/crond_shell.sh
例子2:
用最简单的方法如下
crontab -e
* */2 * * 1-5 /bin/echo "howdy"



10、创建目录/tmp/testdir-当前日期时间;
1
mkdir /tmp/testdir-date +%F-%T



11、在此目录创建100个空文件:file1-file100
1
seq -f 'file%01g' 1 100 | xargs mkdir



12、显示/etc/passw d文件中位于第偶数行的用户的用户名;
1
sed -n 'n;p' /etc/passwd|cut -d: -f1



13、创建10用户user10-user19;密码同用户名;
1
2
3
4
5
6
#!/bin/bash
for i in $(seq -w 10)
do
        useradd -s /bin/bash user10$i
        echo "password$i" | md5sum | tee -a passwd.txt | passwd --stdin  user$i
done



14、在/tmp/创建10个空文件file10-file19;
1
for i in `seq 10 19`;do touch /tmp/file$i;done;



15、把file10的属主和属组改为user10,依次类推。
1
for in in `seq 10 19`;do chown user$i.user$i /tmp/file$i;done;



本周总结:
做完上面的作业发现,熟悉用过的一些命令,也跟着出现了,比如gerp的一些参数,在这里,也重复利用起来了,下面我对他做个归档。
励志语句:晋升需付出,空手套白狼,好比出门左转买福利彩。学习还是需要多努力,多坚持,才能走完整个过程。

grep:
一.匹配字符
1
2
3
4
5
6
7
8
9
10
11
12
13
.    匹配任意单个字符
[ ]  匹配指定范围内的任意字符
[^]  匹配飞指定范围内的任意字符
[:alpha:] 字母字符
[:lower:] 小写字母字符
[:upper:] 大写字母字符
[:digit:] 数字
[:alnum:] 字母数字字符
[:space:] 空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符
[:punct:] 标点字符
[:cntrl:] 控制字符(禁止打印)
[:print:] 可打印字符
使用时一般使用两个中括号.



二、锚定符
1
2
3
4
5
6
7
8
9
10
11
12
1.^  锚定行首    grep  "^r..t"  /etc/passwd
2.$  锚定行尾    grep  "h$"  /etc/passwd
3.^$ 锚定空白行  grep  "^$"  /etc/passwd
4.\< (\b)  锚定词首    grep  "\<r..t"  /etc/passwd
5.\> (\b)  锚定词首    grep  "r..t\>"  /etc/passwd
示例(容易混淆):
至少包含一个空白字符          grep  "[[:space:]]\{1,\}"  /etc/passwd
至少包含一个非空白字符        grep  "[^[:space:]]\{1,\}"  /etc/passwd
没有一个空白字符              grep  -v "[^[:space:]]\{1,\}"  /etc/passwd
6.\(\)对字符分组  grep  "\(l..e\).*\1r"
示例:
grep --color "l\([13]\):\1:.*:\1"  /etc/inittab



三、匹配次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*      匹配前面的字符任一次
.*    匹配任意长度的任意字符(注意贪婪模式,比如  grep  “r.*t” /etc/passwd  )
x\{m,n\}  指定前面的字符至少出现m次,至多出现N次。
x\{m,\}    指定前面的字符至少出现m次
x\{0,n\}  指定前面的字符至多出现N次
x\{m\}    精确匹配m次
?        匹配其前面的字符0或1次
seq:
用法:seq [选项]... 尾数
 或:seq [选项]... 首数 尾数
 或:seq [选项]... 首数 增量 尾数
以指定增量从首数开始打印数字到尾数。
  -f, --format=格式     使用printf 样式的浮点格式
  -s, --separator=字符串        使用指定字符串分隔数字(默认使用:\n)
  -w, --equal-width     在列前添加0 使得宽度相同



for:
1
2
3
4
5
6
7
8
9
10
例子1
for 变量
do
    语句
done
例子2
for 变量 in 列表
do
    语句
done


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-271549-1-1.html 上篇帖子: CentOS 6.8 GRUB加密-修复和修改密码教程 下篇帖子: RHEL7 Or CentOS7下配置aliyun-epel和fedora的EPEL源 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表