wak簡介,wak是一個文本處理工具,通常用於處理數據並生成結果報告
awk的命名是他的創始人AIfred Aho ,Peter Weinberger和Brian Kernighan的姓氏的首字母組成的
語法格式
第一種形式對文件操作
awk 'BEGIN{}pattern{commands}END{}' file_name
第二種形式對輸出處理
standard output | awk 'BEGIN{}pattern{commands}END{}'
語法格式說明
語法格式 解釋
BEGIN{} 正式處理數據之前執行
pattern 匹配模式
{commands} 處理命令,可多行
END{} 處理完成所有匹配數據後執行
awk的內置變量 內置變量之間 用 ;(分號進行分割)
內置變量 含義
$0 整行內容
$1-$n 當前行的字段個數,也就是有多少列
NF 當前行的行號 ,從1開始計數
FNR 多文件處理時,每個文件行號單獨計數,都是從0開始
FS 輸入字段分隔符,不指定默認以空格或tab建分割
RS 輸入分行分割符,默認回車換行
OFS 輸出字段分隔符,默認爲空格
ORS 輸出行分隔符,默認爲回車換行
FILENAME 當前輸入的文件名字
ARGC 命令行參數個數
ARGV 命令行參數數組
$0輸出全行
$ awk '{print $0}' passwd
FS 以分隔符 : 分割字符並輸出 第一個字段
$ awk 'BEGIN{FS=":"}{print $1}' passwd
結果
root
.....
NF輸出打印的當前字段
$ awk '{print NF}' passwd
1
NR打印當前行號 NR不會重新計算
打印行號
awk '{print NR}' passswd
NR打印當前行號 份文件 NR不會重新計算
打印行號份文件不會重新計算
awk '{print NR}' list /etc/passwd
FNR打印當前行號 FRN 會對份文件行號進行重新計算
打印行號份文件不會重新計算
awk '{print FNR}' list /etc/passwd
RS行分隔符
awk 'BEGIN{FS=":";RS="---"}{print $2}' passwd
RS行分隔符 指定---爲分隔符並進行 $0全輸出
awk 'BEGIN{RS="---"}{print $0}' passwd
輸出行分隔符 :ORS="&" print默認輸出行分隔符是 換行符
awk 'BEGIN{RS="---";FS="|";ORS="&"}{print $3}' list
輸出分隔符 :OFS="&" print默認輸出分隔符是 空格
awk 'BEGIN{RS="---";FS="|";ORS="&";OFS=":"}{print $1,$3}' list
FILENAME輸出文件名字 文件有多少行輸出多少次
$ awk '{print FILENAME}' passwd
passwd
當前行處理參數
awk '{print ARGC}' passwd
2
print $NF NF的變量代表的是字段的個數
$ awk 'BEGIN{FS=":"}{print $NF}' passwd
/bin/bash