前言
本文主要給大家介紹了關(guān)于Perl單行命令的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
與One-Liner相關(guān)的perl參數(shù)
- -a 自動(dòng)分隔模式,用空格分隔$并保存在@F中,也就是@F=split //, $
- -F 指定-a的分隔符
- -l 對(duì)輸入的內(nèi)容進(jìn)行自動(dòng)chomp,對(duì)輸出的內(nèi)容自動(dòng)加換行符
- -n 相當(dāng)于while(>)
- -e 執(zhí)行命令,也就是腳本
- -p 自動(dòng)循環(huán)+輸出,也就是while(>){命令(腳本); print;}
記住以上幾點(diǎn)參數(shù),幾乎可以開(kāi)始使用perl來(lái)編寫(xiě)one line命令了
以上為簡(jiǎn)介版,下面這張圖可以算是完整版

根據(jù)下面的例子來(lái)理解下perl one line
1、基本格式:perl -參數(shù) ‘命令' 輸入文件
2、perl -e為必須要寫(xiě)的參數(shù)
3、perl -pe 可用于讀取文件每行,并按照給定的命令進(jìn)行處理,最后輸出;如將文件1.txt中的aaa替換為AAA
perl -pe 's/aaa/AAA/g' 1.txt
4、perl -l參數(shù)幾乎可以跟n搭配代替perl經(jīng)常用的while(>){chomp;}語(yǔ)法
5、如果需要處理tab分割的文件的每一行內(nèi)容,那么perl -alne參數(shù)幾乎可以說(shuō)是必備的,例如while(>){chomp;@F=split /\s+/,$_;print "$F[0]\n"}相當(dāng)于
6、perl單行命令腳本里的變量都不需要預(yù)先聲明,如想打印出每空行,并且每行以行數(shù)開(kāi)頭
perl -ne 'print ++$a." $_" if /./'
7、perl單行命令有時(shí)優(yōu)于sed/grep等shell命令是由于其優(yōu)秀的正則匹配,通常簡(jiǎn)單的匹配可以如:匹配上的行號(hào),模仿grep -c的功能:
perl -lne '$a++ if /regex/; END {print $a+0}'
8、perl單行命令可以使用perl的模塊,如使用sum函數(shù)的模塊:
perl -MList::Util=sum -alne 'print sum @F'
9、perl也可以像awk一樣使用END命令,如打印出文件中總單詞個(gè)數(shù)
perl -alne '$t += @F; END { print $t}'
10、perl也可以使用map{}等函數(shù),如打印出匹配上的單詞的總個(gè)數(shù)
perl -alne 'map { /regex/ $t++ } @F; END { print $t }'
11、perl單行命令可以說(shuō)是將perl的簡(jiǎn)潔用到了極致,如打印出匹配上的行:
12、perl單行命令能像perl一樣靈活的使用則正表達(dá)式
perl -ne 'print if /^\d+$/'
以上例子均出自于http://www.catonmat.net/blog/perl-one-liners-explained-part-one/
使用perl來(lái)處理數(shù)據(jù)的我們,會(huì)一點(diǎn)Perl one line可以有效的減少編寫(xiě)重復(fù)命令的時(shí)間,尤其是那些就用1-2次就不會(huì)用的腳本,尤其在window系統(tǒng)下不方便使用shell命令的時(shí)候。
PS.當(dāng)然在windows系統(tǒng)下也可以借用git模擬Unix命令環(huán)境~~~~
總而言之,蠻適合學(xué)習(xí)下,多用用
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
您可能感興趣的文章:- Perl5和Perl6對(duì)比使用Sigils的差別
- Perl6中的垃圾收集
- 強(qiáng)大的Perl正則表達(dá)式實(shí)例詳解
- Perl中的符號(hào) ->;、=>; 和 :: 分別表示什么意思?
- Perl中常見(jiàn)符號(hào)與操作
- Perl時(shí)間處理函數(shù)用法介紹
- Perl字符串處理函數(shù)大全
- 詳解linux下批量替換文件內(nèi)容的三種方法(perl,sed,shell)
- Perl與JS的對(duì)比分析(數(shù)組、哈希)
- 使用Perl生成隨機(jī)密碼
- ASP.NET中HyperLink超鏈接控件的使用方法
- 將Perl5代碼遷移到Perl6上的解決方案