作者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/m.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