linux命令awk、sed使用及常见面试题

linux命令awk、sed使用及常见面试题

1、现在有一个文件file1,写一条shell 来查询出文件中空行的那行的行号

awk '/^$/{print NR}' file1

image.png

sed -n '/^$/=' file1

image.png

sed -n '/[a-zA-Z0-9@#$%^&*]/!=' file1

image.png

grep -n ^$ file1

image.png

2、输出文件file2 中以test 为结尾的行内容

image.png

awk '/.*test$/{print $0}' file2
awk '/test$/{print $0}' file2

image.png

3、lampp 的日志在/opt/lampp/logs,写一个shell 脚本实现功能:当access_log 的大小大于100K的时候将文件备份并清空原log 文件

cp /opt/lampp/logs/access_log  ./

(1)备份并不清空文件内容

image.png

image.png

(2)备份并清空文件内容

if [ $(ls -l access_log | awk '{print $5}') -gt $((100*1024)) ]; then cp access_log ./access_log_beifen ; echo '' > access_log; fi

image.png

脚本文件

image.png

image.png

image.png

4、将上一题的shell 脚本增加到定时任务,每天的6、12、18、24 点执行一次

image.png

image.png

5 、现在有一个java 的配置文件app.properties, 使用shell 命令将配置文件中的
http://www.weikeu.com/ 给替换为http://127.0.0.1:8000/

sed 's/http:\/\/www.weikeu.com\//http:\/\/127.0.0.1:8000\//g' app.properties 

6、使用一条shell 命令,kill 掉apache 的全部进程

ps -ef | grep httpd | grep -v grep | awk '{print $2}' | xargs kill -9

image.png

7、写一个shell 脚本,执行脚本会复制文件(arg1) 到目标地址(arg2) 如 ./copy_file.sh
access.log /tmp/ 执行后将access.log 给copy 到/tmp 目录下

image.png

image.png

8、现在写一个定时任务,每天0 点备份mysql 数据库的数据,并使用日期来做文件命名
#创建shell文件

vim dbbak.sh
mysqldump -uroot -proot --all-databases  > /data/dbdata/mysqlbak/`date +%Y%m%d`.sql

image.png

image.png

#创建定时任务

crontab –e
0 0 * * *  /home/demon/shells/awkstudy/dbbak.sh

image.png

9、使用shell,统计提供的apache 的access.log 中每个ip 出现的次数,
log 格式如下

58.212.3.7 - - [27/Sep/2017:16:53:59 +0800] "GET /bbs/static/image/admincp/btn_map.gif
HTTP/1.1" 200 347
"http://www.limlhome.cn/bbs/admin.php" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;
rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3"
58.212.3.7 - - [27/Sep/2017:16:53:59 +0800] "GET /bbs/static/image/admincp/scrollu.gif
HTTP/1.1" 200 335
"http://www.limlhome.cn/bbs/admin.php" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;
rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3"
58.212.3.7 - - [27/Sep/2017:16:53:59 +0800] "GET /bbs/static/image/admincp/scrolld.gif

image.png