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