LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1177|回复: 8

awk问题,为何不能完全匹配最后一个域

[复制链接]
发表于 2005-9-5 15:24:04 | 显示全部楼层 |阅读模式
我想将每行最后一个域为“H”的行打印出来,可是我发现$NF=="H"似乎不起作用,如下所示:

$ cat a.txt
%chk=OH-no-minall-DFT.chk
C-CM-            0      5.131069   -3.686223    1.487343 H

$ awk '$NF == "H" {print}' a.txt
$ awk '$NF ~ "H" {print}' a.txt
%chk=OH-no-minall-DFT.chk
C-CM-            0      5.131069   -3.686223    1.487343 H

$ awk '$6 ~ "H" {print}' a.txt
C-CM-            0      5.131069   -3.686223    1.487343 H

我想弄清楚是为什么$NF=="H"不起作用??
发表于 2005-9-5 16:20:07 | 显示全部楼层
你想打印什么?
回复 支持 反对

使用道具 举报

发表于 2005-9-5 16:33:20 | 显示全部楼层

  1. awk '$NF~/\<H\>/'
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-5 16:47:17 | 显示全部楼层
楼上的代码虽然可以解决问题,但是正如我用$6 ~ "H"也只是解决这一个例子一样,并没有解释为何不能使用$NF == "H"。

我发现一行当中,除了$NF不能这样用以外,其它的域都可以用==来做完全匹配的定位,例如
$ awk '$3 == "5.131069" {print}' a
C-CM-            0      5.131069   -3.686223    1.487343 HB
回复 支持 反对

使用道具 举报

发表于 2005-9-5 18:23:15 | 显示全部楼层
我在 cygwin 下运行你的代码没问题
  1. awk '$NF == "H"' a.txt
复制代码

可以正常打印出来……

  1. $ awk --version
  2. GNU Awk 3.1.4
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-9-5 23:40:20 | 显示全部楼层
Post by scopio
楼上的代码虽然可以解决问题,但是正如我用$6 ~ "H"也只是解决这一个例子一样,并没有解释为何不能使用$NF == "H"。

我发现一行当中,除了$NF不能这样用以外,其它的域都可以用==来做完全匹配的定位,例如
$ awk '$3 == "5.131069" {print}' a
C-CM-            0      5.131069   -3.686223    1.487343 HB


试过了,NF可以的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-6 08:23:24 | 显示全部楼层
$ awk --version
GNU Awk 3.1.1

我的版本是3.1.1,是不是版本的问题?
回复 支持 反对

使用道具 举报

发表于 2005-9-6 10:11:55 | 显示全部楼层
awk --version
GNU Awk 3.1.4

可是3.1.1并不很旧。
回复 支持 反对

使用道具 举报

发表于 2005-9-6 10:43:50 | 显示全部楼层
我的是awk, 3.1.1,

  1. [dangli@www dangli]$ cat d.txt
  2. [b]%chk=OH-no-minall-DFT.chk
  3. C-CM- 0 5.131069 -3.686223 1.487343 H[/b]
  4. [dangli@www dangli]$ awk '$NF == "H" {print}' d.txt
  5. [b]C-CM- 0 5.131069 -3.686223 1.487343 H[/b]
  6. [dangli@www dangli]$ awk --version
  7. [b]GNU Awk 3.1.1
  8. Copyright (C) 1989, 1991-2002 Free Software Foundation.[/b]
  9. ...
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表