awk 和 sed 使用案例
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 使用案例的更多相关文章
- linux中cut、printf、awk、sed命令
cut.printf.awk.sed在linux中都是用来处理文本的命令,接下来一个一个看. 一.cut命令 cut [选项] 文件名 选项: 主要使用一下两个参数,若是只使用 -f 则默认的分割符为 ...
- awk与sed简明教程
看到大牛写的关于awk和sed的简明教程,写得很好,为了尊重作者,就不全文转载了,这里标记下链接,方便以后查阅. awk简明教程:http://coolshell.cn/articles/9070.h ...
- 通过awk 和 sed 将多余的列剔除
通过awk 和 sed 将多余的列剔除 名词注释: awk -F 指定分隔符 OFS 指定输出分隔符 sed sed "s/|/test/2" a.log 将第二个 | 线替换为 ...
- awk 和 sed (Stream Editor)
1.sed pattern space(模式空间)相当于车间sed把流内容在这里处理: hold space(保留空间)相当于仓库,加工的半成品在这里临时储存(当然加工完的成品也在这里存储). h/H ...
- awk、sed处理文件的简单例子
awk.sed对处理日志文件和写shell脚本时非常有益.这个东西,如果不经常操作,真心过一段时间就忘差不多..要掌握熟练,就要多练习,这没什么可说的. awk '条件{命令}' filename 假 ...
- awk和sed (十二)
[教程主题]:4.awk和sed [主要内容] [1]awk AWK是贝尔实验室1977年搞出来的文本出现神器.之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberg ...
- AWK与SED命令
linux系统比较常用的AWK与SED命令,这两个命令主要是格式化文本文件信息.接下来将详细介绍这两个命令的基本用法以及可以实现的功能. 一.AWK命令 AWK语言的基本功能是在文件或者字符串中基于指 ...
- awk、sed、grep更适合的方向
awk.sed.grep更适合的方向: grep 更适合单纯的查找或匹配文本 sed 更适合编辑匹配到的文本 awk 更适合格式化文本,对文本进行较复杂格式处理 关于awk内建变量个人见解,简单易懂 ...
- 处理海量数据的grep、cut、awk、sed 命令
grep.cut.awk.sed 常常应用在查找日志.数据.输出结果等等,并对我们想要的数据进行提取. 通常grep,sed命令是对行进行提取,cut跟awk是对列进行提取 处理海量数据之grep命令 ...
随机推荐
- 文件快速搜索工具-Everything的使用(转)
首先它是一款基于名称实时定位文件和目录的搜索工具,有以下几个优点: 快速文件索引 快速文件搜索 较低资源占用 轻松分享文件索引 实时跟踪文件更新 通过使用everything小工具,可以提高我们的工作 ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q70-Q72)
Question 70You plan to create one provider Web Part and two consumer Web Parts.You need to ensure th ...
- Android中方便好用的倒计时类
一.使用api提供的类进行操作 Android提供了CountDownTimer来让我们进行倒计时,可以让我们很方便的进行倒计时的操作.使用方式也很简单,下面直接贴代码就好了: package ...
- 用doxygen+graphviz自动化生成代码文档(附详细教程)
一.引子 用这两个工具可以自动的遍历代码,并且产生代码文档,我们先来看看效果,然后放出这两个工具的下载地址. 二.工具的下载地址 doxygen:http://www.stack.nl/~dimitr ...
- iOS 界面调试利器Reveal
Reveal下载地址:http://revealapp.com/ ,目前要收费了,而且还不便宜,好东西都这样嘛~ 针对越狱设备和非越狱设备可以采取不同的方法,一种是在工程项目中加入Reveal.fra ...
- iOS-多线程之NSOperation
前言 这篇文章主要讲NSOperation的使用. What 使用NSOperation和NSOperationQueue进行多线程开发类似于线程池,只要将一个NSOperation(实际开发中需要使 ...
- (第五章)java面向对象之this的作用总结
this关键字总是指向调用该方法的对象. this可以代表任何对象,当this出现在某个方法体中时,它所代表的对象是不确定的,但它的类型是确定的,它所代表的对象只能是当前类的(在那个类中就是那个类), ...
- windows log 打印语句
1.格式化字符串(Writes formatted data to the specified string) wchar_t szMessage[260]; PWSTR pszFunction = ...
- SPC.NET,为5年的开发做个结尾
从08年到如今从事asp.net开发已五年,起初只是一个简单的喜好,想做个东西出来.于是SPC.NET的前生诞生了,直至今日. 不得不说,一个人开发一个软件是很辛苦的事情,以下是SPC.NET的一些特 ...
- MySQL数据库初识(一)
MySQL是一种免费的小型关系型数据库,与Linux.Apache/Nginx.PHP一起组成了WEB开发的黄金搭档. MySQL是C/S(客户端/服务端)体系结构的软件,而在开发中,PHP承担起了客 ...