有关shell脚本的一些题目
A 答案如下所示:
本小节以几道真题为例,简单讲解与SHELL有关的面试题。在实际工作中,要写的SHELL脚本要复杂得多。
真题1、如何统计文件a.txt有多少非空行?
答案:
grep -c '^..*$' a.txt
或
grep -v '^$' a.txt | wc -l
真题2、文件b.txt,每行以“:”符分成5列,如“1:apple:3:2012-10-25:very good”,如何得到所有行第三列的总合值?
答案:
awk 'BEGIN {FS=":"; s=0} {s+=$3} END {print s}' b.txt
真题3、取文件c.txt的第60至480行记录,忽略大小写,统计出重复次数最多的那条记录,及重复次数。
答案:
sed -n '60,480'p c.txt | sort | uniq -i -c | sort -rn | head -n 1
真题4、如何生成日期格式的文件?
答案:在Linux/Unix上,使用“`date +%y%m%d`或$(date +%y%m%d)”,如:
touch exp_table_name_`date +%y%m%d`.dmp
DATE=$(date +%y%m%d)
或者:
DATE=$(date +%Y%m%d --date '1 days ago') #获取昨天或多天前的日期
在Windows上,使用%date:~4,10%,其中4是开始字符,10是提取长度,表示从date生成的日期中,提取从4开始长度是10的串。如果想得到更精确的时间,那么在Windows上面还可以使用time。
真题5、如何测试磁盘性能?
答案:用类似如下的方法测试写能力:
time dd if=/dev/zero of=/oradata/biddb/testind/testfile.dbf bs=1024000 count=1000
期间系统I/O使用可以用iostat:
iostat -xnp 2 #显示Busy程度
真题6、如何格式化输出结果?
答案:可以使用column命令,如下所示:
[oracle@rhel6lhr ~]$ mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,size=2G)
[oracle@rhel6lhr ~]$ mount | column -t
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,size=2G)
[oracle@rhel6lhr ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[oracle@rhel6lhr ~]$ cat /etc/passwd | column -t -s:
root x 0 0 root /root /bin/bash
bin x 1 1 bin /bin /sbin/nologin