sed,awk學習

一.n,N

next(n)輸出模式空間的內容(如果運行sed時有-n則不會輸出),然後讀取新的輸入內容。

Next(N)通過讀取新的輸入行,並將它添加到模式空間的現有內容之後來創建多行模式空間。模式空間最初的內容和新輸入行之間用換行符分隔。在模式空間中嵌入的換行符可以利用轉義序列‘\n’來匹配。在多行模式空間中,元字符‘^’匹配空間中的第一個字條,而不匹配換行符後面的字符。同樣,’$‘只匹配模式空間中最後的換行符,而不匹配任何嵌入的換行符。

控制流:n/N後繼續執行n/N後的動作,而不是直接回到最開始處執行

二.d,D

d刪除模式空間的內容並導致新讀入的輸入行,從而在腳本的頂端重新執行命令。

D刪除模式空間中直到第一個嵌入的換行符的這部分。他不會導致讀入新的輸入行,他從腳本的頂端重新匹配模式空間剩餘的內容。

控制流:回到腳本頂端

三.p,P

在執行完腳本的最後一個命令後,模式空間的內容自動輸出(-n選項或#n抑制這個默認的動作)。因此,當默認的輸出被抑制或腳本的控制流更改,一直不能到達腳本的底部時,需要使用打印命令(P或p)。注意P或p不改變模式空間的內容。

p:打印模式空間的內容

P:輸出多行模式空間的第一部分,直到第一個嵌入的換行符爲止。

注意:

對於最後一行執行N/n命令,不會執行腳本中N/n後面的命令,這樣的話當總行數是奇數的時候,最後一行不會執行N後面的命令,但如果沒有用-n來禁止打印模式空間的內容,任然會打印最後一行的內容。可以使用$!N命令,這個命令的意思是除了最後一行其他的行均執行N

 

awk有許多內置變量用來設置環境信息,這些變量可以被改變,下面給出了最常用的一些變量:

ARGC 命令行參數個數

ARGV 命令行參數排列

ENVIRON 支持隊列中系統環境變量的使用

FILENAME awk瀏覽的文件名

FNR 瀏覽文件的記錄數

FS 設置輸入域分隔符,等價於命令行 -F選項 NF 瀏覽記錄的域的個數

NR 已讀的記錄數

OFS 輸出域分隔符

ORS 輸出記錄分隔符

RS 控制記錄分隔符

以空格爲分段符:

awk 'BEGIN {RS=" ";}{print $0}' link.txt

awk實現 文本內的換行符 爲分隔符,輸出變爲逗號:(參考 https://blog.csdn.net/weixin_30817749/article/details/99331674)

awk 'BEGIN{ORS=","}{print $0}' ldap_member.log

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章