很实用的Linux 系统运维常用命令及常识(超实用)

2019-09-23 09:17:29丽君

awk '{ for ( i = 1; i <= NF; i++ ) print NF,$i }' file
提取时间,空格不固定
ll | awk -F'[ ]+|[ ][ ]+' '/^$/{print $8}'
查看磁盘空间
df|awk -F"[ ]+|%" '$5>14{print $5}'
取出第四列等于90 的第五列
awk '$4==90{print $5}'
打印所有以模式no 或so 开头的行
awk '/^(no|so)/' test
排列打印
awk 'END{printf
"%-10s%-10sn%-10s%-10sn%-10s%-10sn","server","name","123","12345","234","1234"}' txt
awk 'BEGIN{printf
"|%-10s|%-10s|n|%-10s|%-10s|n|%-10s|%-10s|n","server","name","123","12345","234","1234"}'
awk 'BEGIN{
print " *** 开始*** ";
print "+-----------------+";
printf "|%-5s|%-5s|%-5s|n","id","name","ip";
}
$1!=1 && NF==4{printf "|%-5s|%-5s|%-5s|n",$1,$2,$3" "$11}
END{
print "+-----------------+";
print " *** 结束*** "
}' txt
awk 中计算(求余数)
echo list|awk '{ i=($1%100);if ( $i >= 0 ) {print $0,$i}}'
sub 匹配第一次出现的符合模式的字符串,相当于sed 's//'
awk '{sub(/Mac/,"Macintosh");print}' urfile
#用Macintosh 替换Mac
gsub 匹配所有的符合模式的字符串,相当于sed 's//g'
awk '{sub(/Mac/,"MacIntosh",$1); print}' file
#第一个域内用Macintosh 替换Mac
处理sql 语句
cat 1.txt|awk -F" # " '{print "insert into user
(user,password,email)values(""'''"$1"'','""'''"$2"'','""'''"$3"'');'"}' >>insert_1.txt
引用外部变量
awk '{print "'"$a"'","'"$b"'"}'
在END 块里面把数组内容写到文件
awk -F: '{name[x++]=$1};END{for(i=0;i<NR;i++)print i,name[i]}' data >tmp
将$1 的值叠加后赋给sum
awk 'sum+=$1{print sum}' <<EOF
1 11 111
2 22 222
8 33 333
10 44 444
EOF
加入END 只打印最后的结果
awk '{sum2+=$2;count=count+1}END{print sum2,sum2/count}' <<EOF
1324236000: 4.8726625090e+06 1.4806911317e+07
1324236300: 3.1952608823e+05 1.3144868085e+07
1324236600: 5.0792587262e+05 1.4931600767e+07
EOF
#结果中第一个值是$2 的总和第二个值是$3 的总和第三个值是$2 总和除个数(平均值) 第
四个值是$3 总和除个数(平均值)
#e+06 是科学计数法,表示乘以10 的6 次方
awk '{sum2+=$2;count=count+1}END{print sum2,sum2/count}' <<EOF
1: 3 30
2: 6 60
3: 9 90
EOF
列求和
cat txt |awk '{a+=$1}END{print a}'
列求平均值
cat txt |awk '{a+=$1}END{print a/NR}'
列求最大值
cat txt |awk 'BEGIN{a=0}{if ($1>a) a=$1 fi}END{print a}'
#设定一个变量开始为0,遇到比该数大的值,就赋值给该变量,直到结束
求最小值
cat txt |awk 'BEGIN{a=11111}{if ($1<a) a=$1 fi}END{print a}'
判断$1 是否整除(awk 中定义变量引用时不能带$ )
cat txt |awk '{ i=$1%10;if ( i == 0 ) {print i}}'
##################################