单行bash、shell、perl命令
- 主题:单行经典bash、shell、perl命令
- 作者:luomg
- 摘要:
会陆陆续的写自己工作中的常用有意思的命令,争取你能看完后就能搞定常见操作,
且尽量自少提供基本shell、perl的实现方式
有的写在一行或许略显牵强,但是为了方便还是写在一行
命令开始..........
- 001查看当前目录最大的10个
du -mg .|sort -k1nr|head -n 10 #AIX
du ./ --max-depth=1 --block-size=1G|sort -k1nr|head -10 #Linux
- 002打印标签关键字之间的内容
awk '/CREATE.*/,/\)/' run.log #awk
perl -ne 'print if/CREATE.*/../\)/' run.log #perl
- 003打印标签关键字之外的内容
perl -ne 'print unless/CREATE.*/../\)/' run.log #perl
- 004打印指定范围的行
awk '10<=NR && NR<=20{print NR,$0}' 20150619.log #awk
perl -ne 'print if($.>3 && $. <10)' cmd.sh #perl
- 005统计日志中访问次数最多的IP,并按逆序排序
perl -ne '{$user{$&}++ if/\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b/}END{foreach $key (sort {$user{$b} <=> $user{$a} } keys %user){print "ip=$key,count=$user{$key}\n";}}' bomc.log #perl
结果
ip=135.10.21.250,count=28824
ip=135.10.21.136,count=26543
ip=135.10.21.214,count=21342
ip=135.10.21.248,count=3470
ip=135.10.21.176,count=15
ip=135.10.29.236,count=11
- 006统计日志文件大于1G的文件,并降序排列
find ./ -name "*.log" -exec du -sm {} \;|awk '$1>1024{$1=$1/1024;print}'|sort -k1nr
find ./ -name "*.log" -exec du -sk {} \;|awk '$1>1048576{$1=$1/1048576;print}'|sort -k1nr #AIX LINUX SUNOS通用
find ./ -name "*.log" -size +1G -exec rm -rf {} \;
2022年9月14日 20:56:00 更新06删除日志,直接用find实现
2015年11月2日 14:01:18 更新日志文件大小查看
2015年9月21日 23:34:06 更新至此,待继续。。。