日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows上GAWK的使用(一)

發布時間:2023/12/20 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows上GAWK的使用(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???現在經常要處理到一些日志數據,對這些數據進行分析處理,但首先要對日志數據進行etl處理,如果簡單的數據格式處理,使用gawk是最理想不過了,下面我們就介紹如何使用gawk,對數據進行e(extract)處理。

?

一.到網上下載一個gawk.exe程序(用于Windows上)。

二.gawk的基本語法.

?

1.gawk格式.

gawk [options] "[Begin{}][pattern]{action}[End{}]" InputFileName.

?

1.1. 命令選項[options]

-F fs or --field-separator fs

指定輸入文件折分隔符,fs是一個字符串或者是一個正則表達式,如-F:。
-v var=value or --asign var=value

賦值一個用戶定義變量。
-f scripfile or --file scriptfile

從腳本文件中讀取awk命令。
-mf nnn and -mr nnn

對nnn值設置內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴展功能,在標準awk中不適用。
-W compact or --compat, -W traditional or --traditional

在兼容模式下運行awk。所以gawk的行為和標準的awk完全一樣,所有的awk擴展都被忽略。
-W copyleft or --copyleft, -W copyright or --copyright

打印簡短的版權信息。
-W help or --help, -W usage or --usage

打印全部awk選項和每個選項的簡短說明。
-W lint or --lint

打印不能向傳統unix平臺移植的結構的警告。
-W lint-old or --lint-old

打印關于不能向傳統unix平臺移植的結構的警告。
-W posix

打開兼容模式。但有以下限制,不識別:\x、函數關鍵字、func、換碼序列以及當fs是一個空格時,將新行作為一個域分隔符;操作符**和**=不能代替^和^=;fflush無效。
-W re-interval or --re-inerval

允許間隔正則表達式的使用,參考(grep中的Posix字符類),如括號表達式[[:alpha:]]。
-W source program-text or --source program-text

使用program-text作為源代碼,可與-f命令混用。
-W version or --version

打印bug報告信息的版本。
3. 模式和操作[pattern] And [action]

gawk腳本是由模式和操作組成的:

pattern {action} 如gawk .exe “/root/” ?test.text,或gawk.exe ?“$3 < 100” ?test.text。

兩者是可選的,如果沒有模式,則action應用到全部記錄,如果沒有action,則輸出匹配全部記錄。默認情況下,每一個輸入行都是一條記錄,但用戶可通過RS變量指定不同的分隔符進行分隔。
3.1. 模式

模式可以是以下任意一個:

*

/正則表達式/:使用通配符的擴展集。
*

關系表達式:可以用下面運算符表中的關系運算符進行操作,可以是字符串或數字的比較,如$2>%1選擇第二個字段比第一個字段長的行。
*

模式匹配表達式:用運算符~(匹配)和~!(不匹配)。
*

模式,模式:指定一個行的范圍。該語法不能包括BEGIN和END模式。
*

BEGIN:讓用戶指定在第一條輸入記錄被處理之前所發生的動作,通常可在這里設置全局變量。
*

END:讓用戶在最后一條輸入記錄被讀取之后發生的動作。

3.2. 操作[action]

操作由一人或多個命令、函數、表達式組成,之間由換行符或分號隔開,并位于大括號內。主要有四部份:
*變量或數組賦值
*輸出命令
*內置函數
*控制流命令

???gawk逐行讀取InputFileName文件的內容,將符合pattern規則的行,再按照action指定的操作來執行,pattern相當于是條件,action相當于是執行動作。其中用[]中括號括起來的部分不是必須寫的部分,接下來列舉一個簡單的例子.

test.txt文件中的內容如下:

1111;aaaa;AAAA;

2222;bbbb;BBBB;

3333;cccc;dddd;

在命令窗口運行:gawk.exe "{print $0}" test.txt,則輸出以下內容:

1111;aaaa;AAAA;

2222;bbbb;BBBB;

3333;cccc;dddd;

"{print $0}"表示完整的輸出從test.txt文件中讀取的每一行.$0表示當前讀取的行,從這里我們應該知道gawk從test.txt讀取一行之后開始執行action塊的動作。為了驗證這點,下面再舉一個例子:

gawk.exe "{print """test"""}" test.txt 輸出如下:

test

test

test

由于test.txt文件中有三行,所以action塊部分執行了三次.

?

如果想以分號作為分隔符可以將test.txt分成四列,只輸出前兩列:

gawk.exe -F"\73"?"{print $1,$2}" test.txt 注意這里"\73"是分號的八進制Ascii碼。輸出如下:

1111 aaaa

2222 bbbb

3333 cccc

我們發現輸出的結果中每一列是用空格分隔的,現在我們自己定義分隔符,寫法如下:

gawk.exe?-F"\73"?"BEGIN{OFS="""\t"""}{print $1,$2}" test.txt 輸出結果中每一列是用制表符來分割的,這里面使用到了BEGIN{}塊,和內建變量OFS,BEGIN塊的作用就是在gawk開始讀取test.txt第一行之前要執行的部分,一般在BEGIN塊里面初始化變量,OFS是gawk內建變量,表示輸出列的分割符是什么,這里使用的是制表符.

總結

以上是生活随笔為你收集整理的Windows上GAWK的使用(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。