Uploaded by kennethchen.tw

Perl學習教程之單行命令詳解

advertisement
Perl 學習教程之單行命令詳解
分類:IT 技術 時間:2017-09-25
前言
本 文 主 要 給 大 家 介 紹 了 關 於 Perl 單 行 命 令 的 相 關 內 容 , 分 享
出來供大家參考學習,下面話不多說了,來一起看看詳細的
介紹吧。
與 One-Liner 相關的 perl 參數
-a 自動分隔模式,用空格分隔$並保存在@F 中,也就是@F=split //, $ F 指定-a 的分隔符 -l 對輸入的內容進行自動 chomp,對輸出的內容自
動加換行符 -n 相當於 while(<>) -e 執行命令,也就是腳本 -p 自動循環
+輸出,也就是 while(<>){命令(腳本); print;}
記 住 以 上 幾 點 參 數 , 幾 乎 可 以 開 始 使 用 perl 來 編 寫 one line
命令了
以上為簡介版,下面這張圖可以算是完整版
根據下面的例子來理解下 perl one line
1、 基 本 格 式 : perl -參 數 ‘命 令 ' 輸 入 文 件
2、 perl -e 為 必 須 要 寫 的 參 數
3、 perl -pe 可 用 於 讀 取 文 件 每 行 , 並 按 照 給 定 的 命 令 進 行 處
理 , 最 後 輸 出 ; 如 將 文 件 1.txt 中 的 aaa 替 換 為 AAA
perl -pe 's/aaa/AAA/g' 1.txt
4、 perl -l 參 數 幾 乎 可 以 跟 n 搭 配 代 替 perl 經 常 用 的
while(<>){chomp;} 語法
5、 如 果 需 要 處 理 tab 分 割 的 文 件 的 每 一 行 內 容 , 那 麽 perl alne 參 數 幾 乎 可 以 說 是 必 備 的 , 例 如 while(<>){chomp;@F=split
/\s+/,$_;print "$F[0]\n"} 相 當 於
perl -alne 'print $F[0]'
6、 perl 單 行 命 令 腳 本 裏 的 變 量 都 不 需 要 預 先 聲 明 , 如 想 打 印
出每空行,並且每行以行數開頭
perl -ne 'print ++$a." $_" if /./'
7、 perl 單 行 命 令 有 時 優 於 sed/grep 等 shell 命 令 是 由 於 其 優
秀的正則匹配,通常簡單的匹配可以如:匹配上的行號,模
仿 grep -c 的 功 能 :
perl -lne '$a++ if /regex/; END {print $a+0}'
8、 perl 單 行 命 令 可 以 使 用 perl 的 模 塊 , 如 使 用 sum 函 數 的
模塊:
perl -MList::Util=sum -alne 'print sum @F'
9、 perl 也 可 以 像 awk 一 樣 使 用 END 命 令 , 如 打 印 出 文 件 中
總單詞個數
perl -alne '$t += @F; END { print $t}'
10、 perl 也 可 以 使 用 map{} 等 函 數 , 如 打 印 出 匹 配 上 的 單 詞 的
總個數
perl -alne 'map { /regex/ && $t++ } @F; END { print $t }'
11、 perl 單 行 命 令 可 以 說 是 將 perl 的 簡 潔 用 到 了 極 致 , 如 打
印出匹配上的行:
perl -ne '/regex/ && print'
12、 perl 單 行 命 令 能 像 perl 一 樣 靈 活 的 使 用 則 正 表 達 式
perl -ne 'print if /^\d+$/'
以 上 例 子 均 出 自 於 http://www.catonmat.net/blog/perl-oneliners-explained-part-one/
使 用 perl 來 處 理 數 據 的 我 們 , 會 一 點 Perl one line 可 以 有 效
的 減 少 編 寫 重 復 命 令 的 時 間 , 尤 其 是 那 些 就 用 1-2 次 就 不 會
用 的 腳 本 , 尤 其 在 window 系 統 下 不 方 便 使 用 shell 命 令 的 時
候。
PS.當 然 在 Windows 系 統 下 也 可 以 借 用 git 模 擬 Unix 命 令 環 境
~~~~
總而言之,蠻適合學習下,多用用
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的
學習或者工作具有一定的參考學習價值,如果有疑問大家可
以留言交流,謝謝大家對電腦玩物的支持。
Download