【DB笔试面试275】 有关shell脚本的一些题目_shell脚本

【DB笔试面试275】 有关shell脚本的一些题目_shell脚本_02


Q          题目如下所示:

 有关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