星期六, 1月 20, 2007

perl single quote

perl 真的是不錯的工具
regex 更是perl 的精髓之一..
我用了linux 雖然不久, 但是perl 已經成為不可或缺的tool 了

今天在處理一些東西的時候碰到個問題
我想要把一些長這樣的資料
'123'
'abc'
'haha'

把 兩邊的 single quote 脫掉
我一開始下這樣的指令.
perl -ne 'print "$1\n" if /'(.*)'/' list

結果卻出現錯誤, 大概是bash 把裡面的 single quote 誤認了
我又試
perl -ne 'print "$1\n" if /\'(.*)\'/' list

結果還是不行
google 了一下也沒有人特別講到這個事情
不過倒是看到有人用\047 來代表 single quote
後來試一下發現可以用
perl -ne 'print "$1\n" if /\047(.*) \047/' list

這樣就可以了! :D
---------
另外, 我以前都用這樣的command..
perl -ne 'print "$1\n" if /(xxxx)/' list > list.tmp
mv list.tmp list

因為如果直接
perl -ne 'print "$1\n" if /(xxxx)/' list > list

的話會變成空白的
我今天才看到原來可以這樣..
perl -i.bak -ne 'print "$1\n" if /(xxxx)/' list

這樣可以直接把改玩的東西輸入回去
原來的檔案會存成 list.bak

看來我還是對perl 不夠了解 XD

沒有留言: