日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【perl脚本】perl one line的几个有趣实例1

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【perl脚本】perl one line的几个有趣实例1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

作為一個萌新,最近癡迷于各種一行式腳本,比如sed/grep/awk等,這次來探究下perl一行腳本的幾個有趣實例;

關于perl one line的語法規則,直接看這位大神的博客就好:

https://www.cnblogs.com/f-ck-need-u/p/10219326.html

實例中用到的兩個test文件內容如下:

實例1:文本替換

perl -pi -e 's/begin/BEGIN/g' test1

作用:類似于sed操作,將文件test1中的begin替換為BEGIN,直接修改原文件;

-pi:等價于-p -i;

-p/-n:使用<>將所有@ARGV參數當作文件來執行,例如例子中的test文件;-n、-p都可以被-e中的while(<>)替代;-p一般會將每一行輸出,-n表示禁止默認的輸出;

不過在我的Ubuntu系統中,單獨使用-p時會輸出每一行信息,-pi或者-p -i時未輸出;

-i:in-place簡稱,原地修改文件,-i.tmp則會將原文件另存為原名稱.tmp之后再修改原文件;

-e:將其后的字符串作為腳本內容執行,如實例中的's/begin/BEGIN/g';

其他常用符號如-a -F -w請參考前言博客。

實例2:另存原文件之后修改文件

perl -pi.bak -e 's/BEGIN/begin/g' test1

作用:將原文件test1另存為test1.bak,之后修改test1文件將BEGIN替換為begin;

實例3:還是上面的例子,可以結合find一起使用

find ./ -name "test2" | xargs perl -pi.tmp -e "s/begin/BEGIN/g"

實例4:還是進行替換,替換you后面的內容;

perl -p -e 's/(you\s+).*/$1you_rep/g' test2

$1:perl語言中第一組正則匹配()中匹配的內容,在某些系統中可能需要使用\1;

實例5:按行倒敘整個文件;

perl -p -e 'print reverse <>' test1

因為腳本中包含了print,就不要使用-p了;令我不解的是,這種情況下使用-p會導致程序無法退出,一直處于等待狀態,求大佬解答;

實例6:按段落(沒有空行即一個段落)倒敘整個文件;

perl -00e 'print reverse <>' test1

-00:以段落模式打開文件;

實例7:按字符倒敘整個文件;

perl -0777e 'print scalar reverse <>' test1

-0777一次性讀入整個文件;

注意實例5 6 7應避免使用-i,否則你將得到一個空的test1文件;如果想原文件寫入,不如使用下 > 吧;

實例8:顯示文件3~5行;

perl -ne 'print if 3 .. 5' test1

-n禁止默認的輸出,如果想要強制輸出,只能在-e表達式中自行指定輸出操作,例如print/say/printf。

實例9:顯示BEGIN - end之間的內容;

print -ne 'print if /begin/ .. /end/' test1

嗯?最后一個end消失了?根據我之前的測試,https://blog.csdn.net/moon9999/article/details/106484521,最后一個end應該不會消失才對,難道是因為我換了linux系統的原因?

實例10:刪除BEGIN END之間的內容;

實例11:在文章開頭加一段話;

歡迎添加我的微信~

實例12:在文章結尾加一段話;

注意eof和eof()的區別:前者找的是單一文檔的結尾,后者找的是整體執行的結尾;

實例13:在每行開始加行號;

但是同時加兩個文件會出問題:

這時候要這么寫:

實例14:perl one line同樣支持BEGIN塊和END塊;

?

?

?

總結

以上是生活随笔為你收集整理的【perl脚本】perl one line的几个有趣实例1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。