LinuxSir.cn,穿越时空的Linuxsir!

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

请教一个awk的问题?为什么我的结果和资料上不一样呢?[已解决]

[复制链接]
发表于 2005-8-4 00:34:42 | 显示全部楼层 |阅读模式
[root@localhost shell]# vi awkceshi1
218.112.134.67 aaaa aaaa
999.112.134.67 dddd dddd
888.112.134.67 ffff  ffff
777.112.134.67 gggg  gggg
218.112.134.67 kkkk  kkkk




[root@localhost shell]# awk '{if($1=="218.112.134.67") print $0}' awkceshi1
218.112.134.67 aaaa aaaa
218.112.134.67 kkkk  kkkk

这个是我的操作过程,资料上说上面的命令会打印出awkceshi1的所有行,可是我的在才打出上面2行.

我修改了
[root@localhost shell]# vi awkceshi1
218.112.134.67
999.112.134.67 dddd dddd
888.112.134.67 ffff  ffff
777.112.134.67 gggg  gggg
218.112.134.67 kkkk  kkkk


[root@localhost shell]# awk '{if($1=="218.112.134.67") print $0}' awkceshi1
218.112.134.67
218.112.134.67 kkkk  kkkk


但是结果仍然是这样的! :ask  :ask

请教大家了!
 楼主| 发表于 2005-8-4 00:49:59 | 显示全部楼层
[root@localhost shell]# vi awkceshi1
218.112.134.67
999.112.134.67 dddd dddd
888.112.134.67 ffff ffff
777.112.134.67 gggg gggg
218.112.134.67 kkkk kkkk
[root@localhost shell]# awk -F : '{if($1=="218.112.134.67") print $0}' awkceshi1

218.112.134.67
我加了个:号,结果输出了2行:一个空行和218.112.134.67


???????????????????????????????????
回复 支持 反对

使用道具 举报

发表于 2005-8-4 05:34:40 | 显示全部楼层
Post by 鱼鱼游
[root@localhost shell]# vi awkceshi1
218.112.134.67
999.112.134.67 dddd dddd
888.112.134.67 ffff ffff
777.112.134.67 gggg gggg
218.112.134.67 kkkk kkkk
[root@localhost shell]# awk -F : '{if($1=="218.112.134.67") print $0}' awkceshi1

218.112.134.67
我加了个:号,结果输出了2行:一个空行和218.112.134.67


???????????????????????????????????

  1. awk '/218.112.134.67/' awkceshi1
复制代码

不就行了吗?文件中没有:分隔符为什么要用“-F:"?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-4 08:26:11 | 显示全部楼层
[root@localhost shell]# vi awkceshi1
218.112.134.67
999.112.134.67 dddd dddd
888.112.134.67 ffff ffff
777.112.134.67 gggg gggg
218.112.134.67 kkkk kkkk


[root@localhost shell]# awk '{if($1=="218.112.134.67") print $0}' awkceshi1


这个例子中,只是想试验下awk操作中自己的流控制,这样写错了吗?

那请问正确的awk流控制该怎么写呢?

请教!
回复 支持 反对

使用道具 举报

发表于 2005-8-4 09:57:46 | 显示全部楼层
Post by 鱼鱼游
[root@localhost shell]# vi awkceshi1
218.112.134.67 aaaa aaaa
999.112.134.67 dddd dddd
888.112.134.67 ffff  ffff
777.112.134.67 gggg  gggg
218.112.134.67 kkkk  kkkk

[root@localhost shell]# awk '{if($1=="218.112.134.67") print $0}' awkceshi1
218.112.134.67 aaaa aaaa
218.112.134.67 kkkk  kkkk

这个是我的操作过程,资料上说上面的命令会打印出awkceshi1的所有行,可是我的在才打出上面2行.

什么资料上写的?
如果要想打印awkceshi1的所有行,cat就行了,要awk干嘛?
{if($1=="218.112.134.67") print $0} 不就是说只打印第一个字符串是218.112.134.67的所有行么。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-4 10:25:49 | 显示全部楼层
不好意思,是我自己太粗心了。

:thank  :thank  :thank  :thank  :thank  :thank
:comp  :comp  :comp  :comp  :comp  :comp  :comp


输出是对的,我忘了匹配2字,靠,简直苯死了,,
回复 支持 反对

使用道具 举报

发表于 2005-8-4 13:55:02 | 显示全部楼层
ft,很经典的来回折腾,一开始还以为眼镜有问题
回复 支持 反对

使用道具 举报

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

本版积分规则

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