Linux案例

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

你可能感兴趣的:(Linux)