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长度.
32、md5sum upper |awk '{print substr($1,13,8)}' #将upper的md5 从第13个字符开始截取8个字符;
或 md5sum upper |cut -c13-20
33、md5sum upper |awk '{print toupper($1)}' #将upper的md5值转换为大写;
34、cat passwd |awk '{split($0,b,":");print b[1]}' #查看文件passwd,并且将以:间隔的文件内容类似于数组的形式赋值给b,b[1]代表匹配的第一列.
或cat passwd |awk -F: '{print $1}'
阅读(994) | 评论(0) | 转发(0) |