一.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