Linux20180503 六周第五次课(5月3日)awk扩展

 六周第五次课(5月3日)
复习
扩展
awk 中使用外部shell变量http://ask.apelearn.com/question/199 

相对来说,awk更像是一种简单的编程语言 


A=44echo "ABCD" | awk -v GET_A=$A ’{print GET_A}’
说明:-v选项用于定义参数,这里表示将变量A的值赋予GET_A。
有多少个变量需要赋值,就需要多少个-v选项。与之等价的:应用于脚本中:


image.png

image.png


awk 合并一个文件 http://ask.apelearn.com/question/493 
我有这样的需求,需要把两个文件中,第一列相同的行合并到同一行中。举个例子,有两个文件,内容如下
cat 1.txt
1 aa
2 bb
3 ee
4 ss

cat 2.txt
1 ab
2 cd
3 ad
4 bd
5 de

合并后的结果为:

1 ab aa
2 cd bb
3 ad ee
4 bd ss
5 de

实现的命令为:
awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}'  1.txt  2.txt
image.png

这个涉及到

解释:NR表示读取的行数,FNR表示读取的当前行数
所以其实NR==FNR 就表示读取2.txt的时候。 同理NR>FNR表示读取1.txt的时候
数组a其实就相当于一个map把一个文件多行连接成一行 http://ask.apelearn.com/question/266 

awk中gsub函数的使用 http://ask.apelearn.com/question/200 

awk 截取指定多个域为一行 http://ask.apelearn.com/question/224 

过滤两个或多个关键词 http://ask.apelearn.com/question/198 

用awk生成以下结构文件 http://ask.apelearn.com/question/5494 

awk用print打印单引号 http://ask.apelearn.com/question/1738 

合并两个文件 http://ask.apelearn.com/question/945 

awk的参考教程 http://www.cnblogs.com/emanlee/p/3327576.html 


猜你喜欢

转载自blog.51cto.com/13691454/2112889