Perl基礎學習06之perl一行式

2021-10-05 01:45:30 字數 3110 閱讀 9247

目錄

一行式選項

特殊字元

例1:每一行後面加空行

例2:每一行後加空行,空行除外

例3:連續輸出多個相等字元

例4:行前加空行

例5:輸出非空行

例6:移除單詞間所有空白

例7:每行單詞間連續空白壓縮為單空格

例8:原地修改拷貝

例9:所有行行號

例10:非空行行號遞增,全部輸出

例11:非空行行號遞增,只輸出非空行

例12:#計數單詞個數,為每個單詞編號

例13:#計算每行單詞個數,每行單獨編號

參考文獻

perl程式一行命令,可以替代grep+sed+awk;

-e 表示後面接perl的一行式表示式;

-p 表示print操作,即對每一讀入的行在經過表示式操作後都預設輸出;

-n 表示處理檔案但預設不輸出處理後的行;

-p -n都存在 -n和-p兩個選項會自動讀取檔案,-p會覆蓋-n;

-l 在結合-n或-p使用的時,會自動對讀入的行移除尾隨換行符,然後在輸出的時候自動追加尾隨輸出分隔符;

-i 原地修改、拷貝副本,類似sed的"-i";

$\ 輸出行分隔符,類似awk的ors,它預設為undef;

$.    當前處理行的行號。

更新ing

例如,待處理資料夾file.log

root x 0 0 root /root /bin/bash

daemon x 1 1 daemon /usr/sbin /usr/sbin/nologin

bin x 2 2 bin /bin /usr/sbin/nologin

sys x 3 3 sys /dev /usr/sbin/nologin

sync x 4 65534 sync /bin /bin/sync

perl -pe '$\="\n"' file.log

#將$\(輸出行分隔符)替換為\n,類似awk的ors,$\預設為空值undef

perl -pe '$\="\n" unless /^$/' file.log

#unless /^$/跳過空行

perl -pe '$\="\n" if /\s/' file.log

#\s匹配到多個空白符跳過

以上方法類似

perl -e 'print "comeon!\t"x10,"\n";'

#x,表示重複

perl -pe 's/^/\n/g' file.log

#^替換為\n

perl -ne 'print if /\s/' file.log

#匹配到乙個空白(\s)就不輸出(-n)

perl -ne 'print unless/^$/' file.log

#unless/^$/,匹配到空白就不輸出(-n)

perl -lne 'print if length' file.log

#ength($_)為零不輸出

perl -lpe 's/ //g' file.log

#類似於sed -i

perl -lpe 's/\s+/ /g' file.log

#s/\s+/ /g 多空白替換為一空白

perl -i".bak" -lpe 's/$/\n/g' file.log

#-i修改檔案並複製為file.log.bak

perl -pe '$_ = "$. $_"' file.log

#$.為當前行號

perl -pe '$_ = ++$x." $_" if /\s/' file.log

#if /\s/ 匹配到非空白行,行號自增並返回(++$x.,$x.中x可以替換為其它字母)

perl -ne 'print ++$x." $_" if /\s/' file.log

#不輸出沒處理的行,即空白行不輸出

perl -pe 's/(\w+)/".$1"/ge' file.log

<1>.root <2>.x <3>.0 <4>.0 <5>.root /<6>.root /<7>.bin/<8>.bash

<9>.daemon <10>.x <11>.1 <12>.1 <13>.daemon /<14>.usr/<15>.sbin /<16>.usr/<17>.sbin/<18>.nologin

<19>.bin <20>.x <21>.2 <22>.2 <23>.bin /<24>.bin /<25>.usr/<26>.sbin/<27>.nologin

<28>.sys <29>.x <30>.3 <31>.3 <32>.sys /<33>.dev /<34>.usr/<35>.sbin/<36>.nologin

<37>.sync <38>.x <39>.4 <40>.65534 <41>.sync /<42>.bin /<43>.bin/<44>.sync

perl -pe '$num=0;s/(\w+)/".$1"/ge' file.log

<1>.root <2>.x <3>.0 <4>.0 <5>.root /<6>.root /<7>.bin/<8>.bash

<1>.daemon <2>.x <3>.1 <4>.1 <5>.daemon /<6>.usr/<7>.sbin /<8>.usr/<9>.sbin/<10>.nologin

<1>.bin <2>.x <3>.2 <4>.2 <5>.bin /<6>.bin /<7>.usr/<8>.sbin/<9>.nologin

<1>.sys <2>.x <3>.3 <4>.3 <5>.sys /<6>.dev /<7>.usr/<8>.sbin/<9>.nologin

<1>.sync <2>.x <3>.4 <4>.65534 <5>.sync /<6>.bin /<7>.bin/<8>.sync

直接修改檔案

perl基礎學習1

cat example.pl usr bin perl 注釋,perl的注釋前面只要乙個 即可 多行注釋 pod print hello world n cut 多行注釋 print n 華麗的分割線 n perl的變數既可以是整形,也可以是浮點型,也可以是字串等,my是區域性變數的意思,字串在pe...

perl學習筆記之

1 表示式修飾符if unless while untile foreach 2 data檔案控制代碼 data 標誌著指令碼的邏輯結束,並開啟data檔案控制代碼用於讀取。3 m運算子 如果包圍正規表示式的定界符是斜槓,m運算子是可選的 如果忙亂變了定界符,則是要求的。格式 regular exp...

perl學習 perl除錯命令

除錯命令列表如下 所有命令都在除錯提示符下頂格輸入,命令大小寫有關 h 顯示偵錯程式的幫助資訊。h 以分頁形式顯示偵錯程式的幫助資訊。hh 顯示乙個壓縮的幫助資訊。h除錯命令 顯示某個除錯命令的幫助。perl偵錯程式用法中p表示式 顯示變數或表示式的值,不顯示複雜變數嵌入的結構和資料。x表示式 顯示...