Chinaunix首页 | 论坛 | 博客
  • 博客访问: 405185
  • 博文数量: 112
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 800
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-29 13:41
文章分类

全部博文(112)

文章存档

2020年(1)

2018年(10)

2017年(27)

2016年(18)

2015年(31)

2014年(25)

分类: 系统运维

2015-04-24 18:05:14

1、echo  "ibase=16;4AE0DAAE1"|bc   #16进制转换10进制;
2、find test* -amin 5 -type f -name "*.log"  #查找5分钟之前访问的日志。-cmin n #n分钟之前改变的日志。-mmin n #n分钟前之前修改的日志;
     find /test -maxdepth 1 -type d #只查找当前Game目录一级子目录;
     find /test -path "/test/test1/" -prune -o -type d -name "test*" #查找除了/test/test1/目录的所有匹配的目录;
3、echo -e "\e[3$(( $RANDOM * 6 / 32767 + 1 ))mHello World!"  #随机颜色的字($RANDOM 范围是 [0, 32767]);
4、seq -f %02g 1  #-f 表示浮点运算(格式为:%g);     
    seq -s + 10 #-s 表示定义分隔符(默认的为\n换行);
    seq -w 2  #输出同样的宽度,用0补位;
5、tar -czvf num.tar.gz ./num --exclude=num/baidu* #打包num目录下所有非baidu*文件;
6、date -d '1 day ago'; date -d '11 hour ago'; date -d '2 hour ago - 3 minute'; date -d '16 hour' 显示特定的日期 是支持 人类语言的;
7、浮点运算:
echo "5.01-4*2.0"|bc ;
awk 'BEGIN{print 7.01*5-4.01 }' ;
8、if  grep -q hello a.txt ; then echo yes;else echo no; fi;# grep -q 用于if逻辑判断;
9、ifconfig|grep -o '\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}' #grep -o 仅输出匹配到的字符串;容易产生误解的是一行中可能有多个匹配,而且如果有多个匹配的话多行输出;
     grep -E '([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3])(\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-4])){3}' ip #不能匹配0.0.0.0和255.255.255.255;
     ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'  #取IP地址;
10、cat a
e0db-5520-c929  1         Learned        GigabitEthernet1/0/21    AGING
0026-b92c-52c4  1         Learned        GigabitEthernet1/0/21    AGING
     while read mac b;do f=$(echo ${mac}|sed -r "s/-//g;s/(..)/\1:/g;s/:$//;s/[a-z]+/\U&/g") ;echo $f $mac $b>>c;done       e0:db:55:20:c9:29 1 Learned GigabitEthernet1/0/21 AGING
       00:26:b9:2c:52:c4 1 Learned GigabitEthernet1/0/21 AGING
       echo "e0db-5520-c929" | sed -r 's/-//g;s/(..)/\1:/g;s/:$//'  
      e0:db:55:20:c9:29
11、seq 10|sed ':1;N;s/\n/ /;t1';
      seq 10|awk '{t=t?t" "$0:$0}END{print t}'
      1 2 3 4 5 6 7 8 9 10
12、awk '$2<60{a+=$1}$2<101{b+=$1}$2>100{c+=$1}END{print a,b,c}' num #awk求和;
      cat data.csv | awk -F “|” ‘{ sum += $4 } END { printf “%.2f\n”, sum }’  #awk浮点运算求和data.csv中第四例总和保留小数点后两位;
      echo -e "18612340002\n1862350004"|awk '{sum+=substr($0,length($0)-3)}END{print  sum}'  #最后4位数,求和;
       du -sh *.log |awk '{a+=$1}END{print a"KB"}'  #日志大小总和;
13、ps aux |awk 'NR!=1{a[$1]+=$6;}END{for(i in a) print i "," a[i]"KB";}' #统计user进程使用内存情况;
14、echo -e "1\n2\n3\n4" |awk -F"\n" 'BEGIN{ORS="\","}{print "\""$0}'|sed 's/,$//g'  #输出以",间隔的数据;
15、端口监听连接数:
      netstat -an|grep tcp|awk '{a[$6]++} END {for (i in a) print i,":"a[i]}'|sed 's/ //g'|xargs 
      netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 
16、for ((i=65;i<91;i++)); do printf "\\$(printf '%03o' $i) "; done  #从小到大列出大写字母;
17、scp -P 22 /root/uc.tar.gz root@10.21.0.43:/home/  #scp拷贝文件;
18、批量修改目录名:
      for ((i=1;i<5;i++));do a=`echo $(ls -d tmp"${i}")`;mv ${a} test"${i}"_log;done
19、统计一天当中每分钟io,已本地的ip地址命名的文件:
     nohup iostat -x 60 1440 >> `cat /etc/sysconfig/network-scripts/ifcfg-eth0 |awk -F= '/IPADDR/{print $2}'`.iostat &
20、while read -u3 A && read -u4 B;do echo $A $B;done 3< <(seq 3) 4< <(seq 4 6); # 读取文件描述符3和4的内容;
21、ps H -eo pid,pcpu |sort -nk2 |tail  #查看占用cpu最多的进程;
       或者:top;shift + t
22、awk '!a[$0]++' 5.log;  #去除重复行;
#1、awk数组知识
 2、awk的基本命令格式 awk 'pattern{action}'
    省略action时,默认action是{print},如awk '1'就是awk '1{print}'
 3、var++的形式:先读取var变量值,再对var值+1
       awk处理第一行时:先读取a[$1]值再自增,a[$1]即a[1]值为空(0),即为awk '!0',
   即为awk '1',即为 awk'1{print}'
          awk处理第二行时: 先读取a[$1]值再自增,a[$1]即a[1]值为1,即为awk '!1',
   即为awk '0',即为awk '0{print}'
       效果就是有重复$1的行只有第一次出现被打印,其他的都过滤了。

23、expr `od -An -N4 -tu4 /dev/urandom` % 5 + 1   #随机1-5。

        echo "$(od -An -N4 -tu4 /dev/urandom) % 5 + 1"| bc
       echo "$((`od -An -N4 -tu4 /dev/urandom` %5+1))"
24、p(){ printf "\033[%d;%dH\033[4%dm \033[m" $((RANDOM%LINES+1)) $((RANDOM%COLUMNS+1)) $((RANDOM%8)); }; clear;while :;do p; sleep .001;done 随机在shell屏幕中随机改变颜色

25、MIN=1 && for i in $(seq $(($MIN*60)) -1 1); do echo -en "${i}\n"; sleep 1;clear; done; echo -e "\n\nBOOOM! Time to start."   #倒计时;

26、ssh -p 22 root@192.168.3.253 cat /tmp/111 |diff /tmp/22 -;   比较一个远程文件和一个本地文件

27、ssh -p 22 root@192.168.3.253 bash < /tmp/hello.sh #在远程机器上运行一段脚本。这条命令最大的好处就是不用把脚本拷到远程机器上。

28、yes "$(seq 1 255)" | while read i; do printf "\x1b[48;5;${i}m\n"; sleep .01; done  #在一个256调色板中循环。

29、sed -n 's/insert into/\U&/g' -i china.sql   #将china.sql中匹配到的字符串都替换为大写,\U的意思在元字符里的解释是全部替换为大写,\u只是将下一个字符变为大写,\L全部替换为小写,\l将除下一个字符全变为小写。

30、echo "123456"|passwd --stdin "root"   #将root密码改成123456。

31、md5sum upper|awk '{print length($1)}'   #截取upper的MD5,并打印MD5长度.

32md5sum upper |awk '{print substr($1,13,8)}'   #将upper的md5 从第13个字符开始截取8个字符;
       或 md5sum upper |cut -c13-20 
33md5sum upper |awk '{print toupper($1)}'     #将upper的md5值转换为大写;

34cat passwd |awk '{split($0,b,":");print b[1]}'    #查看文件passwd,并且将以:间隔的文件内容类似于数组的形式赋值给b,b[1]代表匹配的第一列.
       或cat passwd |awk -F: '{print $1}'
阅读(994) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~