自学内容网 自学内容网

面试题解析

1、写一个sed命令,修改/tmp/input.txt文件的内容

要求:

  1.  删除所有空行;
  2.  在非空行前面加一个"AAA",在行尾加一个"BBB",即将内容为11111的一行改为:AAA11111BBB

创造测试文件:

[root@openEuler-22 scripts]# vim /tmp/input.txt

11111

22222

33333

答案:

[root@openEuler-22 scripts]# sed '/^$/d' /tmp/input.txt | sed -r 's/(.*)/AAA\1BBB/'

或(多点分开做):
[root@openEuler-22 scripts]# sed -r -e '/^$/d' -e 's/(.*)/AAA\1BBB/' /tmp/input.txt

效果截图:

2、写出SHELL函数RevertInput

要求:

  1. 函数必须获取三个参数,然后将三个参数倒序echo打印出来
  2. 函数必须检查参数个数的合法性,如果参数非法,打印”Illegal parameters”
  3. 对于下面的输入:RevertInput “this is para1” para2 para3
    1. 应该输出:
    2. para3
    3. para2
    4. this is para1

(注:需要注意第一个参数中的空格)

答案:

RevertInput () {
  if [ $# -ne 3 ]
  then
    echo "Illegal parameters"
  else
    echo $3
    echo $2
    echo "this is $1"
  fi
}

RevertInput "this is para1"
RevertInput "this is para1" para2 para3

效果截图:

有个知识点:Linux shell 间接变量引用

3、 设计一个shell 程序

要求:

  1. 在每月第一天备份并压缩/mnt 目录的所有内容,存放在/home/bak 目录里面
  2. 且文件如下形式:yymmdd_mnt,yy 为年,mm 为月,dd 为日.shell 程序存放在/usr/bin 目录下.

答案:


[root@openEuler-22 scripts]# vim /usr/bin/compress
#!/bin/bash

[ -d /home/bak ] || mkdir /home/bak

tar czf /home/bak/$(date +%y%m%d) /mnt

#加权限
[root@openEuler-22 scripts]# chmod +x /usr/bin/compress


#定时程序
[root@openEuler-22 scripts]# crontab -e
0 2 1 * * bash /usr/bin/compress &>/dev/null

4、awk 是一种程序语言,对文档资料的处理具有很强的功能。

例如 a.txt 文本中的内容如下:#cat a.txt

        Tommy,m,25

        Jean,f,19

        Jack,f,18

现要求使用 awk 语句显示出 a.txt 中的第一列内容。如下
        Tommy
        Jean
        Jack
则该语句为:

答案:

awk -F',' '{print $1}' a.txt


原文地址:https://blog.csdn.net/Starry__Sky222/article/details/145204522

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!