a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Perl > 正文

總結Perl命令行編程中的常用參數

2020-02-23 19:45:38
字體:
來源:轉載
供稿:網友

Perl語言中有許多Perl命令行參數,他們通過學習有機會編寫更簡單的程序,今天在本文中,武林技術頻道小編將帶大家了解總結Perl命令行編程中的常用參數,一起來學習吧!

-e 后面緊跟著引號里面的字符串是要執行的命令:

?

king@king:~$ perl -e ‘print “hello world /n”‘
hello world


如果是多個命令就可以使用多個-e,這里是不是想到了sed呢?但是要注意的是中間的哪個“;”.

?

?

?


king@king:~$ perl -e ‘print “hello world /n” ;' -e ‘print “my first perl command line script /n”‘
hello world
my first perl command line script

?

-M 導入要使用的模塊:

?

king@king:~$ perl -MLWP::Simple -e'print head “http://www.chinacache.com”,”/n”‘
text/html; charset=utf-81337525116978307200Apache/2.2.3 (CentOS)


另外-M可以判斷某個模塊是不是已經安裝了

?

-m 的功能和-M類似,區別在于-M 模塊名等同于use 模塊名,這樣會把一些默認的函數或者其它東西引進過來,-m 模塊名 則會關閉這些默認值,這樣可以引入一些你只使用的函數;例如上面的例子:

換成-m的話就不會有任何輸出;-m 和 -M 通過 = 來引入某個模塊的特別函數.

?

perl -MCGI='header,start_html' -e ‘print header, start_html'


-w 等同于use warnings
-n -p 都會使用 <> 將所有 @ARGV 參數當作文件來逐行運行(有循環的意思哦,經常和其它參數一起處理文件),會將讀入的內容隱式的逐一按行來遍歷文件.每一行將缺省保存在 $_;但-p 會將內容“重復”打印出來,而-n更傾向與打印滿足某種條件的行(這這里還有一些有用的變量比如$. 表示當前行的行數):

?

?

?


king@king:~$ cat file.txt
A 1
B 2
C 3
king@king:~$ perl -p -e ‘print ‘ file.txt
A 1
A 1
B 2
B 2
C 3
C 3
king@king:~$ perl -n -e ‘print ‘ file.txt
A 1
B 2
C 3


看到這里是不是想到了sed的-n 的特性:

?

?

?


king@king:~$ sed -ne ‘p' file.txt
A 1
B 2
C 3
king@king:~$ sed -e ‘p' file.txt
A 1
A 1
B 2
B 2
C 3
C 3


-i 將修改直接的寫入文件,這個和sed也是一樣的哦;

?

?

?


king@king:~$ cat file.txt
A 1
B 2
C 3
king@king:~$ perl -pi -e ‘s/A/a/' file.txt
king@king:~$ cat file.txt
a 1
B 2
C 3


-a 打開自動分離 (split)? 模式. 空格是缺省的分離號. 輸入根據分離號被分離然后放入缺省數組 @F.

?

?

?


king@king:~$ perl -na -e ‘print $F[1],”/n”‘ file.txt
1
2
3


和awk是不是很像?還有更像的,那就是-F,和awk一樣更改字段之間的分割符,默認是空格和tab;

?

?

?


king@king:~$ perl -F':' -alne ‘print $F[0],” “,$F[-1] if /bash$/' /etc/passwd
root /bin/bash
king /bin/bash
guest-b0SIey /bin/bash


看到上面的那個-l的參數沒?它的最主要的作用就是chomp字段和在每個輸出的后面加上“/n”,讓輸出換行;是不是挺有用的呢?

?

有沒有其它和awk有類似的地方呢?答案是肯定的,

BEGIN{},END{} 是不是也很熟悉呢?

以下是一些常用的簡單實例

#perl -pi -e's/aaa/bbb/' filename 修改當前file文件中的文件,不生成中間文件,速度很快.記住 -i 開關,因為它讓你原地編輯文件.

#perl -ne ‘print if /^aaaaa/' filename 象grep一樣過濾文件中需要的內容.這個地方,使用了-n,所以一次是做一行的操作,直到整個文件讀完.另外,在管道時,-n也會一樣,來遍歷管道送過來的內容.

#perl -n -e ‘print “$. – $_”‘ filename 這個例子中的,沒用-ne,只是命令寫成了-n -e,其實一樣,這個例子中,是給當前文件中的內容都加一個行號打印出來.注:$.表示當前行號

#perl -pe ‘$_ = “$. $_”‘ filename 這個其實和上面一樣,分別只是使用了-p替換了-n,這個有個什么好處啦,別的地方都一樣,但-p按行來遍歷完文件后,會給$_打印出來.

大家還記得awk分割域(awk ‘{i = NF – 1; print $1 + $i}')啊,是不是很方便,下面我們來看看perl

?

#perl -lane ‘print $F[0] + $F[-2]‘ 這個神奇的地方在于-a,使用-a后.因為-n分行讀進來,然后-a給數據分割成@F的數組.
#perl -ne ‘print if /^START$/ .. /^END$/' 打印正則中從$start到$end的地方
#perl -ne ‘print if $. >= 15; exit if $. >= 17;' 有效地打印數字范圍中的行
#perl -p -i.bak -e ‘s//bfoo/b/bar/g' *.c 原地修改 -i 開關的神奇之處在于它對 @ARGV 中的每個文件都用該腳本對該文件輸出所產生的文件版本進行替代
#perl -ne ‘print scalar reverse $_' test 給文件中的內容反向排序,比如文件中有abc,就會變成cba

以上就是武林技術頻道小編給大家述說的關于總結Perl命令行編程中的常用參數,如果有同學們對這行業有興趣的話,可以在這方面進行深入學習。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 色九九| 美国一级黄色片 | 少妇淫片aaaaa毛片叫床爽 | av三级在线观看 | 99国产精品99久久久久久 | 亚洲欧美日韩另类精品一区二区三区 | 99久久免费精品国产男女性高好 | 久久99影视| 北条麻妃99精品青青久久 | 91在线视频播放 | 在线日本看片免费人成视久网 | 国产精品毛片一区视频播 | 久久人人爽人人爽人人片av软件 | 国产精品毛片一区二区在线看 | 中文字幕在线一区 | 精品91在线视频 | 自拍视频在线观看 | 亚洲国产精品久久精品怡红院 | 国产日韩欧美在线 | 国产精品一区三区 | 销魂美女一区二区三区视频在线 | 久久va | 久久综合九色综合欧美狠狠 | 久久女人 | 日韩视频国产 | 欧美午夜精品一区二区三区 | 一级高清| 夜夜草视频 | 一本色道久久综合亚洲精品高清 | www中文字幕 | 天堂一区二区三区在线 | 黄色高清视频在线观看 | 精品99在线 | 亚洲 欧美 另类 综合 偷拍 | 在线观看国产wwwa级羞羞视频 | 欧美国产高清 | 国产激情在线视频 | 精品在线看 | 欧美一区二区三区四区在线观看 | 日韩一区二区在线电影 | 一区中文字幕 |