码迷,mamicode.com
首页 > 其他好文 > 详细

awk使用案例

时间:2015-06-29 23:48:02      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

1.模仿wc的行为,统计一个文本文件的文件的字符数、行数、单词数.

awk ‘{numOfChar+=length($0);numOfWord+=NF}END{print numOfChar" " numOfWord" "NR }‘ file

2.上面的例子中有个问题,统计的字符数中包含空格,那么不包含空格的字符数要怎么算?

awk ‘{for (i=1; i<=NF; i++) numOfChar+=length($i)}END{print numOfChar}‘ file

3.awk中如何引用外部变量

name="pola"
echo "" | awk ‘{print "awk awk awk" “‘$name‘”}‘

双引号里单引号里$var.

4.awk数值计算中,如何将一个字符串识别为一串数字?

0开头的字符串按8进制识别,0x开头的字符串按照16进制识别,除此之外按照十进制。这些都是理想的情况,对于其他的情况则按照最长前缀匹配,即有多少匹配多少。

echo "0x12" | awk ‘{printf("%d\n",strtonum($0));}‘

5. 点(.)开头的单词怎么整?

readelf一个.o文件会有.text段的内容出来,如果想找出包含".text"单词的行呢?注意,这个“单词”就是一个点开头,然后后面接了一个正规的单词,其实这并不是个单词!所以当我们使用grep "\b\.text\b"去筛选这样一行时,根本就筛不出来,为什么?\b是个元字符,也是个零宽断言,你可以认为它会匹配这样一个奇怪的位置:两个字符的中间!它就去匹配(数字、字母、下划线)与(空格,标点符号,换行符)中间的位置。现在好了,我们的.text,由于点的左面是个空格,所以空格与点之间并不能匹配上\b,所以使用\b就搜不出来一个单词喽!

6. 读某.o文件中代码段在该文件的偏移

readelf -S write.o | awk ‘/\s\.text/{sub(/\[.*\]/,"",$0); print $4}‘

【awk中模式的部分以及sub等子函数中,正则表达式放在/ /中】

awk使用案例

标签:

原文地址:http://www.cnblogs.com/honpey/p/4606347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!