单行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 更新至此,待继续。。。

posted @ 2015-09-21 22:16  轮子手  阅读(1313)  评论(0编辑  收藏  举报