Perl入門一,通過shell執行perl語句


前言     

根據《Perl語言參考手冊》介紹,Perl是Practical Extraction and Report Language的取首字母縮寫(實用報表提取語言),它是由Larry Wall設計的,並由他不斷更新和維護,用於在UNIX環境下編程。

  • Perl具有高級語言(如C)的強大能力和靈活性。事實上,你將看到,它的許多特性是從C語言中借用來的。
  • 與腳本語言一樣,Perl不需要編譯器和鏈接器來運行代碼,你要做的只是寫出程序並告訴Perl來運行而已。這意味着Perl對於小的編程問題的快速解決方案和為大型事件創建原型來測試潛在的解決方案是十分理想的。
  • Perl提供腳本語言(如sed和awk)的所有功能,還具有它們所不具備的很多功能。Perl還支持sed到Perl及awd到Perl的翻譯器。

      簡而言之,Perl象C一樣強大,象awk、sed等腳本描述語言一樣方便

正文

接觸Perl是由於看到perl在文本處理上的強悍,百度之后發現網上提到的基本也是用perl來做文本操作,比如在一個文件中替換特定字符串,

perl -pi -e 's/originaltextstring/replacementstring/g' filename

參數-pi -e的意思不是很清楚,結尾的g表示替換文檔中出現的說有匹配,

這句話直接作為shell語句在終端執行或者寫在shell腳本中,

下面通過示例來演示一下,

1.新建一個用於測試的文本,輸入一些內容

  vi testperlreplace

2.文件創建完畢看一下我寫了什么內容:

     cat testperlreplace

-----------------------------------------------

     test ni da ye
     nidayede testtest

----------------------------------------------

3.現在替換其中所有的test為hello,

  perl -pi -e 's/test/hello/g' testperlreplace 

4.現在查看文本內容應該已經變了,

     cat testperlreplace

---------------------------------------------

  hello ni da ye
  nidayede hellohello

---------------------------------------------

補充

 

關於perl 后面的-p,-i,-e代表的含義,google后有個老外解答了這個問題,不知正確性如何:http://www.linuxquestions.org/questions/programming-9/perl-replace-text-in-file-476382/

 

  • -p 告訴Perl對后面添加的文件名參數進行遍歷,大致和sed中的這段代碼效果類似

 

  while (<>) {
  ... # your program goes here
  } continue {
  print or die "-p destination: $!\n";
  }

 

我們上面的例子只是一個單獨的文件,按着樣的話,應該可以跟多個名字,甚至*匹配;

  •  -i 大致是用來讀取文件時進行備份操作。
  • -e 告訴Perl后面跟上perl語句

 -p和-i可以合在一起-pi,-p -e也可以何在一起,但是-i,-e不能合在一起寫-ie,下面的語句表示在所有前綴為testperlreplace的文件中替換test字符串為hello

  perl -pi -e 's/test/hello/g' testperlreplace* 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM