免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2119 | 回复: 9

awk 命令使用错误 已解决 [复制链接]

论坛徽章:
0
发表于 2008-06-12 15:12 |显示全部楼层
在下面ly5066113    woodie 2位老大给指出了,是管道符中间有空格 要特别注意。awk检查还真严格

BEGIN{
     while( "cat conf.csv " | getline  test){
        print test
}

这样可以打印

而使用下面的方法这么不可以呢

BEGIN{
     get_conf("conf.csv")
}

function get_conf(confFile){
    while( "cat "confFile| getline  confList){
        print confList
    }
}

谢谢!!

[ 本帖最后由 join2 于 2008-6-16 09:12 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2008-06-12 15:19 |显示全部楼层
这样试试:

"cat "confFile | getline  confList

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2008-06-12 16:55 |显示全部楼层

回复 #1 join2 的帖子

这个函数定义应该放到BEGIN模式前面去吧?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2008-06-12 17:02 |显示全部楼层

回复 #3 woodie 的帖子

都行吧,awk不是模仿c语法么

论坛徽章:
0
发表于 2008-06-12 18:04 |显示全部楼层
原帖由 ly5066113 于 2008-6-12 15:19 发表
这样试试:

"cat "confFile | getline  confList


/bin/sh: line 1: conf.csv: command not found

错误讯息,应该是按命令来执行了。

论坛徽章:
0
发表于 2008-06-12 18:08 |显示全部楼层
原帖由 woodie 于 2008-6-12 16:55 发表
这个函数定义应该放到BEGIN模式前面去吧?

和放到那里没有关系,像 waker 老大说的 awk和c语法相似,可能那里写的语法不规则吧

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2008-06-13 09:19 |显示全部楼层
原帖由 join2 于 2008-6-12 18:04 发表


/bin/sh: line 1: conf.csv: command not found

错误讯息,应该是按命令来执行了。


$ cat urfile
123
456
789
$ cat test.awk
#!/bin/awk -f
BEGIN{
     get_conf("urfile")
}

function get_conf(confFile){
    while("cat "confFile | getline confList){
        print confList
    }
}
$ awk -f test.awk
123
456
789

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2008-06-13 09:26 |显示全部楼层

回复 #6 join2 的帖子

function get_conf(confFile){cmd="cat "confFile
    while( cmd| getline  confList){
        print confList
    }
}

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2008-06-13 11:12 |显示全部楼层
原帖由 waker 于 2008-6-12 17:02 发表
都行吧,awk不是模仿c语法么


是吗?没试过。我一般习惯函数定义写在最前面。hehe.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2008-06-13 11:16 |显示全部楼层

回复 #1 join2 的帖子

又仔细看了一下楼主的帖子,应该是cat confFile没加引号的问题吧。
不过干嘛不写成这样:
function get_conf(confFile){
    while(getline  confList < confFile){
        print confList
    }
    close(confFile);
}

———
引号的问题楼上已经有人指出来了,小心awk的字符串连接吃掉应该有的空格。

[ 本帖最后由 woodie 于 2008-6-13 11:20 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP