[問題] Perl中使用awk失敗...

看板Perl作者 (工廠工人)時間4年前 (2020/11/12 08:10), 4年前編輯推噓0(007)
留言7則, 3人參與, 4年前最新討論串1/1
各位大大好 小弟是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://www.ptt.cc/bbs/Perl/M.1605139805.A.EE5.html ※ 編輯: fabmanufab (1.162.81.111 臺灣), 11/12/2020 09:26:35

11/12 16:40, 4年前 , 1F
把程式碼放到一個檔案 f.pl 再從shell中執行 perl -w f.pl
11/12 16:40, 1F

11/12 16:40, 4年前 , 2F
試看看
11/12 16:40, 2F
我的程式是放在一個.pl檔裡面,但用perl -w 執行還是不行 我覺得system()這個指令很不穩定? 常常無法正常執行一些linux command 跪求高手幫助QQ ※ 編輯: fabmanufab (111.243.0.197 臺灣), 11/13/2020 15:28:26

11/13 19:53, 4年前 , 3F
何為「不能執行」呢?看起來沒有語法上的問題。
11/13 19:53, 3F

11/13 19:55, 4年前 , 4F
或許可以檢查一下system() 的傳回值是否為零
11/13 19:55, 4F
我直接在linux執行那行指令,可以把BB.log印出來 但是如果是藉由system來執行,BB.log是空的 ※ 編輯: fabmanufab (111.243.0.197 臺灣), 11/14/2020 09:51:25

11/14 12:54, 4年前 , 5F
能提A.txt幾行範例嗎?
11/14 12:54, 5F

11/14 12:55, 4年前 , 6F
提供
11/14 12:55, 6F
A.txt內容: Files 1234 and 5678 differ Only in /abc/def/ghj/: QWE ※ 編輯: fabmanufab (111.243.0.197 臺灣), 11/15/2020 15:32:00

11/16 00:41, 4年前 , 7F
看起來像diff結果. ${keyword}一定要放進grep的搜尋條件嗎?
11/16 00:41, 7F
對的 keyword是必須的 ※ 編輯: fabmanufab (36.227.140.104 臺灣), 11/16/2020 08:31:03
文章代碼(AID): #1Vh7rTxb (Perl)
文章代碼(AID): #1Vh7rTxb (Perl)