FILENAME 當前文件名
測試
FS 字段分割符(默認爲一個空格)
字符串
NF 當前記中的字段個數。
get
OFMT 數字的輸出格式(默認爲%6):負責print語句的格式轉換和將數字轉換爲字符串。
awk
OFS 輸出字段分隔符(默認爲一個空格)
變量
ORS 輸出記錄分隔符(默認爲一個換行符)
sed
RS 記錄分割符(默認爲一個換行符)
循環
gawk的增長的變量im
ARGING 當前輸入文件的的ARGV的引索。
數據
ERRNO 當前getline或close()失敗時的描述信息。
文件
FIELDWIDTHS 用空格分隔的數據列表,用於描述輸入字段的寬度。
IGNORECASE 若是不爲0,模式匹配和字符串比較是不分大小寫的
RT 和RS匹配的輸入文本的值(默認什麼也沒有)
能夠使用RS和ORS實現s/old/new/g 的替換形式。但存在在打印的最後有ORS的值。
$awk -f simplesed.awk RS="old|OLD" ORS="brand new" simplesed.data
便可實現把simplesed.data 的「old|Old」替換爲「brand new」
$cat simplesed.awk
{
if (RT == " ")
print $0
else
print $0
}
$cat simplesed.data
The OLD house" old old OLD is a great show.
I like shopping for old things at garage sales.
liuuliuliuliu great company! old
I like
其結果會在末尾多出一個brand new ,通過測試發現,RT在本測試中打印出來是當前的RS每次所匹配的值,如果不在awk的主循環體中,則RT打印無結果。
但我發如今最後的一次匹配上,如果有{print RT,RT,RT,$0},則不會出現重複的RT值,而且在結果中顯示的是先ORS後RT
其緣由是RT打印的是下一次的值,而且只有第一次是在最前面,其餘時候在RS值的後面;{print $0,RT,RT,RT}則會在輸出時把RT的放在RS匹配值的前面。