[轉帖] Linux 下面 perl 命令的簡介

https://www.jb51.net/article/123326.htm

感受挺好的 改天須要仔細學習一下. 

 

前言git

本文主要給你們介紹了關於Perl單行命令的相關內容,分享出來供你們參考學習,下面話很少說了,來一塊兒看看詳細的介紹吧。shell

與One-Liner相關的perl參數windows

  • -a 自動分隔模式,用空格分隔$並保存在@F中,也就是@F=split //, $
  • -F 指定-a的分隔符
  • -l 對輸入的內容進行自動chomp,對輸出的內容自動加換行符
  • -n 至關於while(<>)
  • -e 執行命令,也就是腳本
  • -p 自動循環+輸出,也就是while(<>){命令(腳本); print;}

記住以上幾點參數,幾乎能夠開始使用perl來編寫one line命令了bash

以上爲簡介版,下面這張圖能夠算是完整版函數

 

根據下面的例子來理解下perl one line學習

一、基本格式:perl -參數 ‘命令' 輸入文件spa

二、perl -e爲必需要寫的參數.net

三、perl -pe 可用於讀取文件每行,並按照給定的命令進行處理,最後輸出;如將文件1.txt中的aaa替換爲AAAcode

?
1
perl -pe 's/aaa/AAA/g' 1.txt

四、perl -l參數幾乎能夠跟n搭配代替perl常常用的while(<>){chomp;}語法htm

五、若是須要處理tab分割的文件的每一行內容,那麼perl -alne參數幾乎能夠說是必備的,例如while(<>){chomp;@F=split /\s+/,$_;print "$F[0]\n"}至關於

?
1
perl -alne 'print $F[0]'

六、perl單行命令腳本里的變量都不須要預先聲明,如想打印出每空行,而且每行以行數開頭

?
1
perl - ne 'print ++$a." $_" if /./'

七、perl單行命令有時優於sed/grep等shell命令是因爲其優秀的正則匹配,一般簡單的匹配能夠如:匹配上的行號,模仿grep -c的功能:

?
1
perl -lne '$a++ if /regex/; END {print $a+0}'

八、perl單行命令可使用perl的模塊,如使用sum函數的模塊:

?
1
perl -MList::Util= sum -alne 'print sum @F'

九、perl也能夠像awk同樣使用END命令,如打印出文件中總單詞個數

?
1
perl -alne '$t += @F; END { print $t}'

十、perl也可使用map{}等函數,如打印出匹配上的單詞的總個數

?
1
perl -alne 'map { /regex/ && $t++ } @F; END { print $t }'

十一、perl單行命令能夠說是將perl的簡潔用到了極致,如打印出匹配上的行:

?
1
perl - ne '/regex/ && print'

十二、perl單行命令能像perl同樣靈活的使用則正表達式

?
1
perl - ne 'print if /^\d+$/'

以上例子均出自於http://www.catonmat.net/blog/perl-one-liners-explained-part-one/

使用perl來處理數據的咱們,會一點Perl one line能夠有效的減小編寫重複命令的時間,尤爲是那些就用1-2次就不會用的腳本,尤爲在window系統下不方便使用shell命令的時候。

PS.固然在windows系統下也能夠借用git模擬Unix命令環境~~~~

總而言之,蠻適合學習下,多用用

總結

以上就是這篇文章的所有內容了,但願本文的內容對你們的學習或者工做具備必定的參考學習價值,若是有疑問你們能夠留言交流,謝謝你們對腳本之家的支持。

相關文章
相關標籤/搜索