时间:2014-12-31 15:50:39 作者:qipeng 来源:系统之家 1. 扫描二维码随时看资讯 2. 请使用手机浏览器访问: https://m.xitongzhijia.net/xtjc/20141231/33843.html 手机查看 评论 反馈
•累加每一行的第一个字段:
代码如下:
echo -e ”1\n 2\n 3\n 4\n“ | awk ‘BEGIN{num = 0 ;
print ”begin“;} {sum += $1;} END {print ”==“; print sum }’
传递外部变量
代码如下:
var=1000
echo | awk ‘{print vara}’ vara=$var # 输入来自stdin
awk ‘{print vara}’ vara=$var file # 输入来自文件
用样式对awk处理的行进行过滤
awk ‘NR 《 5′ #行号小于5
awk ‘NR==1,NR==4 {print}’ file #行号等于1和4的打印出来
awk ‘/linux/’ #包含linux文本的行(可以用正则表达式来指定,超级强大)
awk ‘!/linux/’ #不包含linux文本的行
设置定界符
使用-F来设置定界符(默认为空格)
awk -F: ‘{print $NF}’ /etc/passwd
读取命令输出
使用getline,将外部shell命令的输出读入到变量cmdout中;
代码如下:
echo | awk ‘{”grep root /etc/passwd“ | getline cmdout; print cmdout }’
在awk中使用循环
for(i=0;i《10;i++){print $i;}
for(i in array){print array[i];}
eg:
以逆序的形式打印行:(tac命令的实现)
代码如下:
seq 9| \
awk ‘{lifo[NR] = $0; lno=NR} \
END{ for(;lno》-1;lno--){print lifo[lno];}
} ’
awk实现head、tail命令
•head:
代码如下:
awk ‘NR《=10{print}’ filename
•tail:
代码如下:
awk ‘{buffer[NR%10] = $0;} END{for(i=0;i《11;i++){ \
print buffer[i %10]} } ’ filename
打印指定列
•awk方式实现:
代码如下:
ls -lrt | awk ‘{print $6}’
•cut方式实现
代码如下:
ls -lrt | cut -f6
打印指定文本区域
•确定行号
代码如下:
seq 100| awk ‘NR==4,NR==6{print}’
发表评论
共0条
评论就这些咯,让大家也知道你的独特见解
立即评论以上留言仅代表用户个人观点,不代表系统之家立场