awk中匹配shell变量字符

Posted 陈浩然MC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk中匹配shell变量字符相关的知识,希望对你有一定的参考价值。

遇到问题:
现在有两个脚本,我想
将file1中的内容按file2来匹配
[[email protected] home]# cat file1
3-1-1 POTV=1,POTA=0,POTP=2
1-4-76 POTV=1,POTA=0,POTP=1
2-1-2 POTV=1,POTA=1,POTP=1
3-1-4 POTV=1,POTA=1,POTP=2
4-1-5 POTV=1,POTA=1,POTP=2
7-1-2 POTV=1,POTA=1,POTP=2
3-1-10 POTV=1,POTA=1,POTP=2
1-1-1 POTV=1,POTA=2,POTP=0

 

[[email protected] home]# cat file2
1-1-1
2-1-2
2-1-3
3-1-4
4-1-5

  

相当于grep的精确匹配,不过是用awk实现的
grep -w ‘1-1-1‘ file1
实现用for in循环取值,赋予变量
 
写了一个替换思路用for in循环将匹配内容变为变量,然后匹配替换
for i in `cat file2`
do
awk  ‘$1==‘‘"‘$i‘"‘‘{print $0}‘ file1 >> urfile
done
 
awk  ‘$1==‘   ‘"‘   $i   ‘"‘    ‘{print $0}‘   file1
这段中单引号是脱义的作用
在awk中精确匹配字符,需要将字符用双引号引用:
即
awk ‘$1=="1-1-1"{print $0}‘ test 
所以对传递参数要用单引号将双引号脱义让awk识别
单引号成对出现是按就近原则来的

  

 
 

以上是关于awk中匹配shell变量字符的主要内容,如果未能解决你的问题,请参考以下文章

Shell 的sed和awk 工具

awk字符串操作(字符串链接传入传出shell变量)

Shell文本过滤

shell工具-awk

在awk代码中引用shell变量的方法

Linux Shell常用技巧 awk编程