一分鐘學awk夠用

2021-08-15 18:48:19 字數 2498 閱讀 9739

1.什麼是awk

(1)aho、weinberger、kernighan三位發明者名字首字母;

(2)乙個行文字處理工具;

2.awk基本原理

2.1原理:逐行處理檔案中的資料

2.2語法

awk 'pattern + '

說明:

(1)單引號''是為了和shell命令區分開;

(2)大括號{}表示乙個命令分組;

(3)pattern是乙個過濾器,表示命中pattern的行才進行action處理;

(4)action是處理動作;

(5)使用#作為注釋;

例子:顯示hello.txt中的第3行至第5行

cat hello.txt | awk 'nr==3, nr==5'

2.3pattern說明

pattern引數可以是egrep正則中的乙個,正則使用/pattern/

例子:顯示hello.txt中,正則匹配hello的行

cat hello.txt | awk '/hello/'

說明:

(1)pattern和action可以只有其一,但不能兩者都沒有;

(2)預設的action是print;

例子:顯示hello.txt中,長度大於100的行號

cat hello.txt | awk 'length($0)>80'

3.內建變數

fs 分隔符,預設是空格

nr 當前行數,從1開始

nf 當前記錄字段個數

$0 當前記錄

$1~$n 當前記錄第n個字段

例子:顯示hello.txt中的第3行至第5行的第一列與最後一列

cat hello.txt | awk 'nr==3, nr==5'

4.內建函式

gsub(r,s):在$0中用s代替r

index(s,t):返回s中t的第乙個位置

length(s):s的長度

match(s,r):s是否匹配r

split(s,a,fs):在fs上將s分成序列a

substr(s,p):返回s從p開始的子串

5.操作符

5.1運算子

類似於c,支援+、-、*、/、%、++、–、+=、-=等諸多操作;

5.2判斷符

類似於c,支援==、!=、>、=>、~(匹配於)等諸多判斷操作;

6.控制流程

6.1.begin和end

begin和end本質是乙個pattern。

begin用於awk程式開始開始前,做一些初始化的工作;

end用於awk程式結束前,做一些收尾的工作。

例子:統計字元個數

awk '

begin

end'

6.2流程控制語句

(1)if(condition){}else{}

(2)while{}

(3)do{}while(condition);

(4)for(init;condition;step){}

(5)break/continue:如果有end,會執行end中的收尾工作

個流程控制語句用法幾乎與c相同。

7.awk與shell的互動

(1)awk中使用shell中定義的變數:使用單引號即可;

#!/bin/bash

str="hello"

echo | awk ''";

}'

(2)awk中使用shell命令:使用雙引號,或者system命令;

#!/bin/bash

echo hello | awk ''

或者

#!/bin/bash

echo | awk ''

(3)awk中的變數傳出至shell:沒有什麼好方法,老老實實用檔案吧;

(4)getline:awk裡,從檔案中讀取變數到awk中

#!/bin/bash

echo | awk '

}'

一分鐘sed入門(一分鐘系列)

1.簡介 sed是一種行編輯器,它一次處理一行內容。2.sed呼叫方式 sed options command file s sed options f scriptfile file s 第一種直接在命令列中執行,第二種把命令寫到了指令碼中,二者無本質區別。示例 1 列印hello.txt的內容 ...

一分鐘看懂mysql 一分鐘,看懂易貨

從20世紀80年代開始,易貨公司在美國加拿大 澳大利亞等國興起,成為這些國家減少現金用量 增加銷售 減少庫存 開發新客戶 開闢新市場 促進經濟發展的重要產業。也成為了企業消化庫存商品 剩餘生產能力 無形資產的有效方式和在遭遇資金瓶頸時的新選擇。2015年以來,中國線下易貨店開始了矇眼狂奔,在河南南陽...

一分鐘管理

有效而優秀管理者的 三板斧 一分鐘管理 你和下屬一起設定 一分鐘目標 確保他們知道自己應該做什麼,以及好的工作表現是什麼樣的。之後,你會努力發現他們做對了什麼事,好對他們進行 一分鐘稱讚 最後,如果你們完全有能力做好某件事,卻沒能做好,你就對他們進行 一分鐘批評 一分鐘目標 1.擬定3 5 個目標,...