bash 正则表达式习题

来源:互联网 发布:beyond compare mac版 编辑:程序博客网 时间:2024/06/05 03:49
作业:
1.列出/etc下所有以.conf结尾的文件,并把输出结果重定向到/var/tmp/conf.find中

法一、ls -d /etc/*.conf >/var/tmp/conf.find
 法二、 find /etc -name *.conf>/var/tmp/conf.find
2.定义一个ipadd的变量,此变量的内容为eth0的网卡ip,并要求此变量在所有的shell中都能生效
用户目录下:ipadd=`ifconfig eth0 |grep "inet addr"| cut -f2 -d:|awk'{print $1}'`
进 vim .bashrc  :ipadd=`ifconfig eth0 |grep"inet addr"| cut -f2 -d :|awk'{print $1}'`
 export ipadd  
3.将系统环境变量PATH的值改为/bin,然后执行passwd 修改当前用户的密码能成功么
不行,      /usr/bin/passwd 
4.将当前的系统的语言环境变成中文(如已是中文则切换成英文),并永久生效
LANG="en_US.UTF-8" ,并且写入/etc/sysconfig/i18n 文件里面

5.找出系统中小于1k的文件并复制到/var/tmp/find_dir中,并放入后台执行
mkdir /tmp/find_dir ;find / -size -1k -exec cp -a {}  /tmp/find_dir \;&>/dev/null &
6.对系统的组账户件统计,并对他们的gid做排序,输出到文件~/gid.txt,并对输出做行数统计 
sort -t: -k3 -n /etc/group |tee ~/gid.txt |wc -l 

7.使用sed直接对文件~/install.log做修改,将x86_64全部修改为i386,并生成备份文件
 cat ~/install.log    sed -i.bak 's/x86_64$/i386/'g

8.找出所有系统的以.iso结尾的文件,在~下新建一个test.iso文件,并拷拷贝到/tmp中,使用locate搜索看updatedb能否找到两个iso文件
家目录下(/tmp目录下建不行): touch test.iso       updatedb      locate *.iso           cp test.iso/tmp 
9.将虚拟机连接互联网,并使用elinks访问www.redhat.com,并将其源码下载下来放到/tmp/redhat.source
elinks -source www.redhat.com >/tmp/redhat.source
10.给root发送一封邮件,主题为The task is so hard,正文为I’ll do this work trymy best!
postfix  yum install mutt    mail -s + 主题  +正文 ctrl d
11.显示/proc/meminfo文件中以不区分大小的s开头的行;
grep -i "^s "(^s|^S)  /proc/meminfo
sed -rn '/^s|^S/p' /proc/meminfo
12.显示/etc/passwd中以nologin结尾的行; 
grep "nologin $"  /etc/passwd
取出默认shell为/sbin/nologin的用户列表 
grep "nologin $"  /etc/passwd |cut -d: -f1   
取出默认shell为bash,且其UID号最小的用户名 
grep "bin/bash$"  /etc/passwd |sort -n -t:-k3|head -1|cut -d: -f1 
13、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
    grep -p '^#\s+\S+'/etc/inittab
14、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
grep -p --color=auto ':\d :' /etc/inittab
15、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
alias grep='grep --color=auto'   grep -p'^\s+' /boot/grub/grub.conf
16、显示文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
grep -p '^(\d).*\1$'  
17、找出某文件中的,1位数,或2位数;?
ifconfig |grep -p "\b\d\b|\b\d\d\b"

18、找出ifconfig命令结果中的1-255之间的整数;-s     
1位数\b【1-9】\b|\b[1-9]\d\b|1[0-9] [0-9]
2位数 \b【1-9]【0-9】\b
3位数  1\d\d  \b2[0-4]\d\b \b25【0-4】\b 

19、删除/etc/grub.conf文件中行首的空白符;
sed -r 's/^\s+//' /etc/grub.conf
20、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
sed 's/:[0-9]:/:5:/' /etc/inittab
21、删除/etc/inittab文件中的空白行;
grep -v ''^$'' etc/inittab   逆向
22、删除/etc/inittab文件中开头的#号; 
sed 's/^#//'  /etc/inittab
23、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
sed -r 's/^#\s+//' /etc/inittab

原创粉丝点击