學習GAWK入門(整理)

2021-04-13 13:58:50 字數 2526 閱讀 5274

awk是一種文字處理和模式匹配語言,程式語句描述需要進行匹配和處理的輸入資料。awk程式在其輸入資料中搜尋包含模式的記錄、對記錄執行指定的操作,直到程式到達輸入的末尾。

與perl一樣,awk是一種解釋性語言,所以awk不需要進行編譯。

gawk 具有下列獨特的特性和優點:

awk以文字進行操作,而文字又包括檔案或標準輸入流,它對文字進行分類得到記錄和字段。記錄由記錄分隔符指定,預設的記錄分隔符為換行符,存放在rs變數中,可以自行修改;欄位由字段分隔符指定,預設為空格,存放在變數fs中,也可以修改。

記錄

$awk '//

'myfile

//為任意模式,也就是匹配所有記錄,print將記錄輸出,上面命令為將檔案myfile輸出到標準輸出。{}為空操作,不執行任何操作,多個action用分號";"分隔。

兩個特殊的模式

begin、end,前者在文字之前執行,常定義一些變數,後者在文字之後執行,常做一些製表,彙總的處理

常用命令

語句描述

exit停止程式的執行,並且退出。

next停止處理當前記錄,並且前進到下一條記錄。

nextfile停止處理當前檔案,並且前進到下乙個檔案。

print列印使用引號括起來的文字、記錄、欄位和變數。(預設情況下是列印出當前整行記錄。)

printf列印格式化文字,類似於它的c語言對等成分,但必須指定結尾的換行。

sprintf返回格式化文字字串,與printf使用相同的格式。

四種不同的方法使用awk:檔案、命令列、篩選器、指令碼。

命令列:awk '/pattern/' filename

檔案:awk  -f  awkfile  filename      //不用打引號

指令碼:#! /usr/bin/awk  -f                   //以此開頭

篩選器:用管道將資料傳入awk       $cat sampel | awk '//'

欄位和記錄

$awk ''

myfile 輸出

heigh-ho

!sing, the

most frendship most

then, heigh

-ho,

注意$1和$2之間的逗號是用來輸出空格的。

字段分隔符

一般在begin模式中定義,如 $awk 'begin //' myfile

還可以用-f選項指定字段分隔符,如 $awk -f ":" '//' myfile

常用變數

變數描述

nf該變數包含每個記錄的字段個數。

nr該變數包含當前的記錄個數。

fs該變數是字段分隔符。

rs該變數是記錄分隔符。

ofs該變數是輸出字段分隔符。

ors該變數是輸出記錄分隔符。

filename該變數包含所讀取的輸入檔案的名稱。

ignorecaseignorecase設定為非空值,gawk 將忽略模式匹配中的大小寫。

gawk 模式匹配

在輸入記錄中匹配模式

1. 字串:

$awk 

/green

/ myfile

匹配有green欄位的記錄

2. 正規表示式:

$awk /!.

*!/ myfile

匹配兩個感嘆號間有任何字串的文字的記錄

3. 非列印字元:/*** 十進位制數,***為10進製

/xnn十六進製制,nn為16進製制

在字段中匹配模式

格式field !~ /***/                   #不包含

field  ~  /***/                   #包含

$awk 

'$3 ~/is/

'myfile

輸出most friendship 

isfeigning, most loving mere folly:

可以在兩個模式之間使用布林表示式 &&、| | 或 可以在模式之前使用 !  

在兩個模式之間使用逗號(,)可以指定乙個範圍,它輸出包括匹配項部分的完整內容,即使在兩個不同的記錄中。

Linux入門 近期學習整理

前幾天去了下洛陽玩。回來之後就連續看到了編寫應用程式 不過今天和訊為的技術支援聊了一下,他給我發了一下聊天記錄主要是告訴乙個新人如何入門 總結一下就是 這些都是訊為技術人員提供的 uboot 就是乙個bootloader作為引導,uboot 檢測記憶體,儲存等裝置,並且設定處理器等裝置的時鐘等等,期...

Docker入門基礎學習整理(3)

docker在唯讀層上新增乙個可寫層,registry用於儲存映象 乙個映象可以有多個tag,乙個tag只能有乙個映象 6種命名空間 uts.user,mount,ipc,pid,net 使用docker build建立映象 格式 dockersbuild 選項 路徑 例如 docker build...

python入門 零基礎入門 學習資料整理

python 是一種物件導向的解釋型計算機程式語言,創始人為荷蘭人吉多 範羅蘇姆 guido van rossum 是一門對初學者比較友好的程式語言,入門相對簡單,並且網上有大量的學習資料。我在這裡整理了學習python過程中的一些鏈結和學習資料,希望對大家有所幫助。知乎有大量關於自學python的...