前言
根據《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*