1、设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名形式yymmdd_etc,yy为年,mm为月,dd为日。
#!/bin/sh
d=`date +%y%m%d`
tar -cvjf ${d}_etc.tar.bz2 /etc
mv ${d}_etc.tar.bz2 /root/bak/${d}_etc.tar.bz2
crontab -e
* * 1 * * sh a.sh
2、Shell程序fileback存放在/usr/bin目录下。
查找文件后缀是log的 三天前的文件删除
1)
find /usr/bin -name '*.log' -mtime -3 -exec rm -f {} \;
2)
for xx in `find /usr/bin -name '*.log' -mtime +3`
do
rm -f $xx
done
3、文件A.txt内容为"12:34:68",只输出A.txt中的"34"
awk -F: '{print $2}' A.txt
4、用sed命令实现直接将文件B.TXT中的所有123替换成345
sed -i 's/123/345/g' B.txt
5、用sed修改文件mailbox.txt的20行的zhango为wang
sed -i '20s/zhango/wang/g' mailbox.txt
6、编写一个脚本实现简单的减法计算,要求提示输入变量
#!/bin/sh
read -p "请输入第一个数字:" num1
read -p "请输入第二个数字:" num2
re=`expr $num1 - $num2`
echo $re
7、a,b两个文件,各包含10万条电话号码,但两个文件中的电话号码
有部分重复,找出a中有而b中没有的电话号码
1)
注解:a.txt中的内容着条赋给变量line;变量line着条在b.txt中进行搜索,有则1,无则2;然后进行判断
#!/bin/sh
cat a.txt|while read line
do
data=`grep -c $line b.txt`
if [ $data -eq 0 ];then
echo $line >> c.txt
fi
done
2)
comm a.txt b.txt
8、某系统管理员需要每天做一定的重复工作,编制一个解决方案:
1)从下午4:50 删除/abc目录下的全部子目录和全部文件
2)从早上8:00~下午6:00每小时读取/qwert目录下按文件中的全部数据
加入到/backup目录下的abcde.txt文件汇总
1)crontab -e
50 16 * * * rm -rf /abc
2)
* 8-18/1 * * * cat /qwert/a >> /backup/abcde.txt
9、编写shell脚本将当前目录下大于10k的文件转移到/tmp目录中
#!/bin/sh
for x in `find ./ -size +10k`
do
cp $x /tmp
done
10、文件a中包含1万条数据,编写脚本逐行读取文件内容,将年龄
大于30岁的人员信息写入到文件b中,文件内容格式如下:
序号,姓名,年龄
001,张三,31
002,李四,27
003,王五,25
004,刘霞,32
#!/bin/sh
sed '2,$' a|while read line
do
data=`echo "a"|awk -F"," '{print $3}'`
if [ $data -gt 30 ];then
echo $data >> b
fi
done