红联Linux门户
Linux帮助

shell中sed和awk的一些用法和例子

发布时间:2015-02-16 10:56:37来源:linux网站作者:linux人

做运维的应该经常用sed和awk这两个工具,但要想把他们用得好绝非易事,需要长时间的积累,本文就粗略的谈谈日常中用到的一些例子。


1.如何在shell中获取字符串string的长度

echo ${#string}


2.替换文件text中一个或多个空格

sed -i "s/ \+/||/g" test
注释:\+意思是之前字符的一个或多个


3.删除文件text中“[”和“]”两个字符

sed -i -e "s/\[//g" -e "s/\]//g" text


4.文本text的每一列以逗号分隔,现在要删除第六列,然后输出其他列,每一列以空格分隔

awk 'BEGIN{FS=",";OFS=" "}{$6="";print $0}'


5.输出每个用户所占用的CPU百分比

top -bn 1 | awk '{if (NR>7) print $0}' | awk '{sum[$2]+=$9}END{for (i in sum) printf "%.2f %s\n" ,sum[i],i}' | sort -nr


6.统计nginx的access.log中每个url的访问数和流量,输出前10名

awk '{print $7"\t" $10}' access_2010-12-8.log|awk '{S[$1]+=$2;S1[$1]+=1}END{for(i in S) print S[i],S1[i],i}'|sort -rn|head -10