一、有文件file1
1、请用shell查询file1 里面空行的所在行号
awk …{if($0~/^$/)print NR}? file1
or
grep -n ^$ file1|awk -F : '{print $1}'
2、编写ShellScript查询file1 以abc 结尾的行
grep abc$ file1
3、打印出file1 文件第1 到第3 行
sed -n ?1,3p? file1
head -3 file1
4、分析apache日志,给出当日访问ip的降序列表。
一句话思路:分析ip就要提取ip,提取的办法除了awk,还有个东西叫cut。
cut -d " " -f1 /etc/httpd/log/access_log | sort | uniq -c | sort -nr
知识点:cut命令,sort将汇总相同内容,uniq -c合并重复内容,并给出重复次数。sort -nr 使用数字排序,默认是ascii,并且是降序,默认是升序。
awk '{sum[ip]++}END{for(var in sum)print ip sum[var]}'
/etc/httpd/log/access_log | sort -k2 -nr
知识点:awk数据,sort -k2 -nr 降序数字排序就不说了,-k参数指定使用哪个列进行排序。默认是自然是第一列。
5 如何批量把若干文件从一个扩展名改为另一个扩展名?比如把后缀gz,改为
答:
1.for file in *.gz; do mv $file `basename $file .gz`.zip; done
或(也适合ksh)
for file in *.gz; do mv $file $.zip; done
rename gz zip *.gz
2.ls | grep gz | awk -F'.' '{print }'|xargs -i mv {}.gz {}.zip
二、如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1 Iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp –dport 80 -j DNAT -to-destination 192.168.2.1:8080
三、crontab
在11 月份内,每天的早上6 点到12 点中,每隔2 小时执行一次/usr/bin/httpd.sh 怎么实现