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命令 ...
随机推荐
- offset笔记
1.offsetParent 2.offsetTop 3.offsetLeft 4.offsetWidth 5.offsetHeight offsetWidth是元素的可视宽度,这个宽度包括元素的边框 ...
- [ javascript css clip ] javascript css clip 的奇思妙想之文字拼接效果
语法: clip : auto | rect ( number number number number ) 参数: auto : 对象无剪切 rect ( number number numbe ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q121-Q124)
Question 121You develop a custom approval workflow. The workflow uses the CreateTask class to assign ...
- android 回调函数一:基本概念
1.概念 客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数. 一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C ...
- android在Data目录内置可删除的APP
一.准备工作:make_ext4fs.mkuserimg.sh.simg2img,把它们跟要修改的 .img.ext4(或.img)文件放置到同一个目录下 二.转换源文件为img格式( .img则略过 ...
- 挣值管理(PV、EV、AC、SV、CV、SPI、CPI)记忆之我见
挣值管理(PV.EV.AC.SV.CV.SPI.CPI)记忆之我见 挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三 ...
- VMware虚拟机网络环境类型
0x01. VMware Ubuntu虚拟机网络环境 ① Bridge桥接模式:虚拟机与物理机的IP同在一个网段:虚拟机独立且地位与物理机相同:虚拟机可直接访问物理机以及物理机相连的外部网络的主机或网 ...
- .net 中使用配置文件需注意引用dll文件
需要用到sqlhelper和配置文件时发现加了using System.Configuration;还是不能用ConfigurationManager. 查了几遍msdn未果,直接百度才发现还需要引用 ...
- javascript中数组的map方法
map方法原型:array1.map(callbackfn[, thisArg]) 参数: array1,必选. 一个数组对象.该函数一般用于数组对象 callbackfn,必选. 最多可以接受三个参 ...
- Nginx安装学习使用详细记录
选择Nginx的优点:Nginx 可以在大多数 Unix like OS 上编译运行,并有 Windows 移植版. Nginx 的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建 ...