Chinaunix

标题: awk 完全匹配问题 [打印本页]

作者: young19860802    时间: 2010-07-19 10:48
标题: awk 完全匹配问题
文本内容
432066  Hanseatic city;Northern Germany
00432066 Hanseatic city;Northern Germany

文本222分隔符是tab键如何用变量的精确匹配$1后,打印出$2
name=00432066

awk -F"\t" "{if($1=="$name")print $2}" 222   
awk: cmd. line:1: {if(==00432066)print }
awk: cmd. line:1:     ^ syntax error

如果不用变量,就能得到想要的结果,但是用到变量报错,估计是试用了" 然后awk以为$1是系统变量的关系吧?这个问题如何解决那?
作者: blackold    时间: 2010-07-19 10:51
回复 1# young19860802


    使用-v var=$name
作者: young19860802    时间: 2010-07-19 10:56
回复 2# blackold


    还是有问题哦使用了-v
awk -F"\t" -v var="$name" '{if($1==var)print $2}' 222
匹配出来是2条结果,我想的是精确匹配哦,谢谢黑哥哈
作者: blackold    时间: 2010-07-19 11:13
回复 3# young19860802


     awk -F'\t' -v var=$name '$1==var""' urfile
作者: expert1    时间: 2010-07-19 11:17
-v
作者: where27    时间: 2010-07-19 11:23
回复 4# blackold


    为什么要这样呢黑哥
作者: young19860802    时间: 2010-07-19 11:25
回复 4# blackold


    awk -F'\t' -v var=$name '$1==var""'
中的""一对双引号起什么作用那?还有只要符合条件,按照你的写法如何只输出$2
作者: blackold    时间: 2010-07-19 11:26
回复 6# where27


   原来是数值比较,不是LZ想要的。要强迫进行字符串比较。
作者: blackold    时间: 2010-07-19 11:27
wk -F'\t' -v var=$name '$1==var""{print $2}'
""的作用,转换为字符串,进行字符串比较。
看基础吧。
作者: song376456    时间: 2010-07-19 11:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: bright_mac    时间: 2010-07-19 11:31
正则:
awk -F "\t" '{if($1 ~ /^432066$/)print $2}' 222
作者: howge    时间: 2010-07-19 12:18
回复 4# blackold

如果不加双引号,会出现什么问题呢?请黑哥哥明示
作者: expert1    时间: 2010-07-19 12:18
{:3_183:}{:3_182:}{:3_183:}
作者: syshack    时间: 2010-07-19 12:28
学习到了。谢谢黑哥
作者: blackold    时间: 2010-07-19 12:39
回复 12# howge


    前面已经说了。

    不加双引号进行的是数值比较。01和1相等。

   加""(实质是字符串连接操作)之后,进行字符串比较。"01"不等于"1"
作者: davidbeckham921    时间: 2010-07-19 12:52
黑哥威武!~~

来抱黑哥大腿!~~

学习了!~~




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2