作者fabmanufab (工厂工人)
看板Perl
标题[问题] Perl中使用system失败...
时间Thu Nov 12 08:10:03 2020
各位大大好
小弟是Perl新手,最近想把awk放进Perl来使用,
程式如下:
my $cmd=q(grep 'Only in ${keyword}' ./A.txt | awk -F '[ :]' '{print $3, $5}'
> BB.log);
system($cmd);
主要是想在A.txt中捞'Only in $keyword'的关键字
然後利用awk 分解字串(空格及:都要分解),印出第3、5个字串到BB.log中。
google看到好像因为这串有太多单引号,会误导perl,因此需要先把他们塞进q()中
但这样我还是不能执行....
乱试了很多方法还是不能执行,跪求各位大大帮忙~谢谢!!!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.162.81.111 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Perl/M.1605139805.A.EE5.html
※ 编辑: fabmanufab (1.162.81.111 台湾), 11/12/2020 09:26:35
1F:→ flu: 把程式码放到一个档案 f.pl 再从shell中执行 perl -w f.pl 11/12 16:40
2F:→ flu: 试看看 11/12 16:40
我的程式是放在一个.pl档里面,但用perl -w 执行还是不行
我觉得system()这个指令很不稳定? 常常无法正常执行一些linux command
跪求高手帮助QQ
※ 编辑: fabmanufab (111.243.0.197 台湾), 11/13/2020 15:28:26
3F:→ gugod: 何为「不能执行」呢?看起来没有语法上的问题。 11/13 19:53
4F:→ gugod: 或许可以检查一下system() 的传回值是否为零 11/13 19:55
我直接在linux执行那行指令,可以把BB.log印出来
但是如果是藉由system来执行,BB.log是空的
※ 编辑: fabmanufab (111.243.0.197 台湾), 11/14/2020 09:51:25
5F:→ edwar: 能提A.txt几行范例吗? 11/14 12:54
6F:→ edwar: 提供 11/14 12:55
A.txt内容:
Files 1234 and 5678 differ
Only in /abc/def/ghj/: QWE
※ 编辑: fabmanufab (111.243.0.197 台湾), 11/15/2020 15:32:00
7F:→ edwar: 看起来像diff结果. ${keyword}一定要放进grep的搜寻条件吗? 11/16 00:41
对的 keyword是必须的
※ 编辑: fabmanufab (36.227.140.104 台湾), 11/16/2020 08:31:03