免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2244 | 回复: 8
打印 上一主题 下一主题

system调用出错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-15 12:34 |只看该作者 |倒序浏览
awk '{print $1","$2","$3}' e.txt > e.csv  在unix运行成功
我将它放到perl中  用system函数调用
system "awk '{print $1","$2","$3}' e.txt > e.csv";
虽然没报错,但得不到我要的结果
   请大神们帮我瞧瞧  到底哪里错了

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
2 [报告]
发表于 2012-10-15 12:58 |只看该作者
双引号中的 $1 $2 $3

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2012-10-15 13:06 |只看该作者
本帖最后由 jason680 于 2012-10-15 13:06 编辑

回复 1# alexyuan881

system "awk '{print $1","$2","$3}' e.txt > e.csv";
change it to
system "awk '{print \$1\",\"\$2\",\"\$3}' e.txt > e.csv";

or it just a shell script, use shell script easily

or use Perl script to do it:
use strict;
use warnings;
open (FHcsv, ">", "e.csv") or die "can't open e.csv";
open (FHtxt, "<", "e.txt") or die "can't open e.txt\n";
while(<FHtxt>){
  my @aData = split;
  print FHcsv join(",", @aData) . "\n";
}
close FHcsv;
close FHtxt;
   

论坛徽章:
0
4 [报告]
发表于 2012-10-15 13:23 |只看该作者
回复 3# jason680
改后报错如下
  Bare word found where operator expected at 02.txt line 1, near "'{print \$1\",\"\$2\",\"\$3}' e"
        (Missing operator before e?)
syntax error at 02.txt line 1, near "'{print \$1\",\"\$2\",\"\$3}' e"
Execution of 02.txt aborted due to compilation errors.


   

论坛徽章:
0
5 [报告]
发表于 2012-10-15 13:52 |只看该作者
  1. [root@192.168.11.128_wynginx2 ~]#echo 1A 2B 3C | perl xxx.pl
  2. 1A,2B,3C
  3. [root@192.168.11.128_wynginx2 ~]#cat xxx.pl
  4. #!/bin/perl
  5. system(q(awk '{print $1","$2","$3}'));
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [报告]
发表于 2012-10-15 14:23 |只看该作者
回复 4# alexyuan881

It's no error on my system, but q// easily to use

$ cat sys.pl
system "awk '{print \$1\",\"\$2\",\"\$3}' e.txt > e.csv";

$ perl sys.pl

$ cat e.csv
1,2,3
a,b,c

$ uname -a
Linux VirtualBox 3.2.0-31-generic-pae #50-Ubuntu SMP Fri Sep 7 16:39:45 UTC 2012 i686 i686 i386 GNU/Linux

   

论坛徽章:
0
7 [报告]
发表于 2012-10-15 16:31 |只看该作者
jason680 发表于 2012-10-15 14:23
回复 4# alexyuan881

It's no error on my system, but q// easily to use

可以了  不好意思  是我打错了
可不可以给我讲讲为什么要这么做   因为我还有几个问题
system"awk "BEGIN{print"waferlot,csvbin1,mapfilebin1,normal"}{print \$0}' e.csv >end.csv"
我这个也不行  

论坛徽章:
0
8 [报告]
发表于 2012-10-15 16:35 |只看该作者
回复 6# jason680
是我打错了 可以了  
是不是perl引用的时候特殊字符都需要转义吗??

   

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
9 [报告]
发表于 2012-10-16 10:18 |只看该作者
""是不能直接嵌套的,只会就近匹配
你自己读一下,也会被""""""弄混吧
所以要转义
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP