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等子函数中,正则表达式放在/ /中】

7. 查找当前目录下所有的.c文件和.h文件

find . -regextype "posix-egrep" -regex ".*(\.c|\.h)$"

【find要求正则表达式全模式匹配,并不是像grep那样直接写出一个局部符串的正则就可以.】

【如果你疑惑正则的用法,比如为什么转义字符‘\’有的时候像是把特殊字符转化为一般字符,有的时候又把这些字符都当做普通字符,转义的意思就变成了:hey, 把这些当做特殊符号对待!那么你就用-regextype选择一种你比较熟悉的方法吧】

8. ext4有多少行代码?

find ./fs/ext4/ -type f -regextype "posix-egrep"  -regex ".*(.h|.c)$" -exec cat {} \; | wc -l

还有一种方法是用awk做,明晚回来发

9. sed中 N 指令和 n 指令的区别用下面这个例子一目了然:

hon@hon:~/workstation/shell$ cat cu
This is 1
This is 2
This is 3
This is 4
This is 5

hon@hon:~/workstation/shell$ cat cu | sed 'N;s/\n//g;s/^.*$/&_hello/'
This is 1This is 2_hello
This is 3This is 4_hello
This is 5
hon@hon:~/workstation/shell$ cat cu | sed 'n;s/\n//g;s/^.*$/&_hello/'
This is 1
This is 2_hello
This is 3
This is 4_hello
This is 5
n在读取下一行之前把之前的行给整出模式空间打印,读取当前行,于是新读出来的行就是当前空间唯一的行了;

N在读取下一行之前不会整出之前读出来的行,所以当前空间中的数据也包括前一行捏,这个和awk的RS全局变量意义一样,

这样的话,n/N后面的sed指令是施加的内容就不一样啦!这就是区别了,貌似N的作用更大一些呢

p和P应该同理把

awk 和 sed 使用案例的更多相关文章

  1. linux中cut、printf、awk、sed命令

    cut.printf.awk.sed在linux中都是用来处理文本的命令,接下来一个一个看. 一.cut命令 cut [选项] 文件名 选项: 主要使用一下两个参数,若是只使用 -f 则默认的分割符为 ...

  2. awk与sed简明教程

    看到大牛写的关于awk和sed的简明教程,写得很好,为了尊重作者,就不全文转载了,这里标记下链接,方便以后查阅. awk简明教程:http://coolshell.cn/articles/9070.h ...

  3. 通过awk 和 sed 将多余的列剔除

    通过awk 和 sed 将多余的列剔除 名词注释: awk -F 指定分隔符 OFS 指定输出分隔符 sed sed "s/|/test/2" a.log 将第二个 | 线替换为 ...

  4. awk 和 sed (Stream Editor)

    1.sed pattern space(模式空间)相当于车间sed把流内容在这里处理: hold space(保留空间)相当于仓库,加工的半成品在这里临时储存(当然加工完的成品也在这里存储). h/H ...

  5. awk、sed处理文件的简单例子

    awk.sed对处理日志文件和写shell脚本时非常有益.这个东西,如果不经常操作,真心过一段时间就忘差不多..要掌握熟练,就要多练习,这没什么可说的. awk '条件{命令}' filename 假 ...

  6. awk和sed (十二)

    [教程主题]:4.awk和sed [主要内容] [1]awk AWK是贝尔实验室1977年搞出来的文本出现神器.之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberg ...

  7. AWK与SED命令

    linux系统比较常用的AWK与SED命令,这两个命令主要是格式化文本文件信息.接下来将详细介绍这两个命令的基本用法以及可以实现的功能. 一.AWK命令 AWK语言的基本功能是在文件或者字符串中基于指 ...

  8. awk、sed、grep更适合的方向

    awk.sed.grep更适合的方向: grep 更适合单纯的查找或匹配文本 sed 更适合编辑匹配到的文本 awk 更适合格式化文本,对文本进行较复杂格式处理 关于awk内建变量个人见解,简单易懂 ...

  9. 处理海量数据的grep、cut、awk、sed 命令

    grep.cut.awk.sed 常常应用在查找日志.数据.输出结果等等,并对我们想要的数据进行提取. 通常grep,sed命令是对行进行提取,cut跟awk是对列进行提取 处理海量数据之grep命令 ...

随机推荐

  1. android 读中文文本文件

    AndroidManifest.xml中 加入: <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="and ...

  2. 转:使用Nlog记录日志到数据库

    原文:http://www.cnblogs.com/Gyoung/archive/2012/10/18/2729613.html Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台, ...

  3. JSP内置对象--request对象

    本文主要介绍JSP中的request对象 request对象的主要方法: setAttribute(String name,Object):设置名字为name的request的参数值 getAttri ...

  4. 简单认识UISwitch

    以下是常用属性: self.mySwitch.layer.cornerRadius = 15;   // 边框圆角角度 self.mySwitch.layer.borderWidth = 2;  // ...

  5. Web应用程序系统的多用户权限控制设计及实现-栏目模块【8】

    前五章均是从整体上讲述了Web应用程序的多用户权限控制实现流程,本章讲述Web权限管理系统的基本模块-栏目模块.栏目模块涉及到的数据表为目录表. 1.1栏目域 为了更规范和方便后期系统的二次开发和维护 ...

  6. C语言-05-内存分析

    一.进制 1> 内存细节 根据数据类型分配相应大小的内存空间 内存空间由高地址向低地址分配 数据一般按照从高位到低位存储 2> 常用的进制格式 十进制 ① 由0~9十个数字组成 ② 逢10 ...

  7. Windows 7 与 Vmware Ubuntu 15.10_64 共享文件夹

    设置共享文件夹     安装/更新最新的vmware-tools   安装             在ubuntu 内部会打开DVD ,里面的压缩包中包含vmware-toole. 先解压      ...

  8. Android中ListView 控件与 Adapter 适配器如何使用?

    一个android应用的成功与否,其界面设计至关重要.为了更好的进行android ui设计,我们常常需要借助一些控件和适配器.今天小编在android培训网站上搜罗了一些有关ListView 控件与 ...

  9. 从1.5k到18k, 一个程序员的5年成长之路

    昨天收到了心仪企业的口头offer, 回首当初什么都不会开始学编程, 到现在恰好五年. 整天在社区晃悠, 看了不少的总结, 在这个时间点, 我也写一份自己的总结吧. 我一直在社区分享, 所以, 这篇总 ...

  10. Effective Java 06 Eliminate obsolete object references

    NOTE Nulling out object references should be the exception rather than the norm. Another common sour ...