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 命 令 環 境 ~~~~ 總而言之,蠻適合學習下,多用用 總結 以上就是這篇文章的全部內容了,希望本文的內容對大家的 學習或者工作具有一定的參考學習價值,如果有疑問大家可 以留言交流,謝謝大家對電腦玩物的支持。