Chinaunix

标题: awk变量使用问题 [打印本页]

作者: zhuifeng_wsd    时间: 2015-08-03 14:30
标题: awk变量使用问题
遇到一个很奇怪的问题

如下文件:
cat test

00d2 00d2
00d5 00d5
00d8 00d8
00db 00db
00de 00de
00e1 00e1
00e4 00e4
00e7 00e7
00ea 00ea
00ed 00ed

那么如下命令
awk -v var=00e1 '$2==var{print $1}' test

期待是输出
00e1

可现在结果是输出
00e1
00e4
00e7


真是百思不得其解
作者: haooooaaa    时间: 2015-08-03 14:35
  1. $ awk -v var='00e1' '$2~var{print $1}' a
  2. 00e1
  3. $ awk -v var='00e1' '$2==""var{print $1}' a
  4. 00e1
复制代码

作者: zhuifeng_wsd    时间: 2015-08-03 14:38
回复 2# haooooaaa


    大神啊。
第一种,在我这里不适用,因为有00e1,还有00e1_01这种情况,没贴出来而已。

第二种,是个什么意思?为什么加上""就好了呢?我的问题是出在哪里?
希望大神不吝赐教。
作者: haooooaaa    时间: 2015-08-03 14:42
加了 "" 应该让它认为是字符串吧,
作者: zhuifeng_wsd    时间: 2015-08-03 14:48
回复 4# haooooaaa


    非常感谢大神,大致了解了。
作者: MMMIX    时间: 2015-08-03 14:54
zhuifeng_wsd 发表于 2015-08-03 14:38
回复 2# haooooaaa
第一种,在我这里不适用,因为有00e1,还有00e1_01这种情况,没贴出来而已。


写成 -v var='^00e1$' 不就行了?
作者: zhuifeng_wsd    时间: 2015-08-03 15:58
回复 6# MMMIX


    好,思路很不错,又学习了。
作者: Shell_HAT    时间: 2015-08-07 15:30
参考:
http://blog.chinaunix.net/uid-17176286-id-5150859.html
作者: MMMIX    时间: 2015-08-07 16:12
回复 8# Shell_HAT


    00e1, 00e4, 00e7 都是科学记数法里面的 0




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