亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

awk詳解及舉例

發布時間:2020-09-11 03:34:56 來源:網絡 閱讀:491 作者:meng129589 欄目:MongoDB數據庫

 

AWK語言

awk詳解及舉例

awk詳解及舉例

 

v  選項:

-F  :指明輸入時用到的字段分隔符

-v var=value: 定義變量

awk詳解及舉例

v  分割符、域和記錄

awk 執行時,由 分隔符分隔的字段(域)標記$1,$2..$n稱 稱

為域標識。$0 為所有域,注意:和shell 中變量$ 符含義不同

文件的每一行稱為記錄

省略action行 ,則默認執行 print $0 的 的

$0:打印所有

v  示例:

awk '{print "hello,awk"}'

awk –F: '{print}' /etc/passwd

awk –F: ‘{print “wang”}’ /etc/passwd

awk –F: ‘{print $1}’ /etc/passwd

awk –F: ‘{print $0}’ /etc/passwd

awk –F: ‘{print $1”\t”$3}’ /etc/passwd

tail –3 /etc/fstab |awk ‘{print $2,$4}’

 

awk 變量

v  變量:內 置 和自定義變量

v FS :輸入字段分隔符,默認為空白字符

awk -v FS=':' '{print $1,FS,$3}’ /etc/passwd

awk –F: '{print $1,$3,$7}’ /etc/passwd

v OFS :輸出字段分隔符,默認為空白字符

awk -v FS=‘:’ -v OFS=‘:’ '{print $1,$3,$7}’ /etc/passwd

vRS輸入記錄分隔符,指定輸入時的換行符,原換行符仍有效

awk -v RS=' ' ‘{print }’ /etc/passwd

v ORS :輸出記錄分隔符,輸出時用指定符號代替換行符

awk -v RS=' ' -v ORS='###'‘{print }’ /etc/passwd

 

 

awk詳解及舉例

awk詳解及舉例

 

 

 

打印奇數行或者偶數行:

 

 

awk詳解及舉例

awk詳解及舉例

 

計算的一些簡單方法

awk詳解及舉例

統計一文件里單詞出現的次數:

awk詳解及舉例

 

 

 NF :字段數量

awk -F ‘{print NF}’ /etc/fstab, 引用內置變量不用$

awk -F: '{print $(NF-1)}' /etc/passwd

awk詳解及舉例

v NR :行號

awk詳解及舉例

 

 FNR :各文件分別計數, 行號

awk '{print FNR}' /etc/fstab /etc/inittab

awk詳解及舉例

 FILENAME :當前文件名

awk '{print FILENAME}’ /etc/fstab

打印出來時將所屬文件名也打印出來

awk詳解及舉例

 

ARGC :命令行參數的個數

awk '{print ARGC}’ /etc/fstab /etc/inittab

awk ‘BEGIN {print ARGC}’ /etc/fstab /etc/inittab

awk詳解及舉例

v ARGV:數組,保存的是命令行所給定的各參數

awk詳解及舉例

 

  自定義變量( 區分 字符大小寫)

(1) -v var=value

(2)  program

 

 

awk詳解及舉例

awk詳解及舉例

 變量放在{}里和外邊的區別:

{}內:每次執行時都要賦值一次

{}外:執行之前先賦值,以后循環使用

-f :調用腳本

 

 

awk詳解及舉例

awk詳解及舉例

 

printf命令

后邊有幾個變量,前邊就應該有幾個格式的定義,即幾個%定義,百分號定義和變量要一一對應

v  格式化輸出:printf  “FORMAT ” , item1, item2, ...

(1)  必須指定FORMAT

(2)  不會自動換行,需要顯式給出換行控制符,\n

(3) FORMAT 中需要分別為后面每個item 指定格式符

v  格式符:與item 一一對應

%c:  顯示字符的ASCII碼 碼

%d, %i:  顯示十進制整數

%e, %E: 顯示科學計數法數值

%f :顯示為浮點數

10.3總共10位,包括30,一個小數點

awk詳解及舉例

%g, %G :以科學計數法或浮點形式顯示數值

%s :顯示字符串

%u :無符號整數

下圖為10個字符:

awk詳解及舉例

%%:  顯示% 自身

v  修飾符:

#[.#] :第一個數字控制顯示的寬度;第二個# 表示小數點后精度,%3.1f

awk詳解及舉例

 

-:  左對齊(默認右對齊) %-15s

awk詳解及舉例

+:顯示數值的正負符號 %+d

 

BEGIN:在前面加一個表頭

awk詳解及舉例

操作符

v  算術操作符:

x+y, x-y, x*y, x/y, x^y, x%y

-x:  轉換為負數

+x:  轉換為數值

v  字符串操作符:沒有符號的操作符,字符串連接

v  賦值操作符:

=, +=, -=, *=, /=, %=, ^=

++, --

v  比較操作符:

==, !=, >, >=, <, <=

v  模式匹配符:~

/etc/passwd中匹配的是root的打印出來:

awk詳解及舉例

df里以/dev/sd開頭的打印出來

awk詳解及舉例

awk詳解及舉例

awk詳解及舉例

左邊和右邊匹配包含 !~:不包含bash的行

 

 

awk詳解及舉例

awk詳解及舉例

++在前:先加再打印

++在后:先打印再加:(--同理)

 

 邏輯操作符:與 與&& ,或||,非!

 cmd1 cmd2兩個命令都要執行,都執行完再決定最終的結果為真還是假

 cmd1 && cmd2先看第一個為真,假;如果第一個為假,那么后邊的不管真假與第一個都是假,所以有可能后續的不執行

awk里的&&的意思與cmd1 cmd2的含義一樣:

awk詳解及舉例

  條件表達式(三目表達式):

selector?if-true-expression:if-false-expression

如果selector?成立,則執行if-true-expression

如果selector?不成立,則執行if-false-expression

因為?和:將條件表達式分成了三段,所以稱為三目表達式

 

relational expression:  關系表達式,結果為“真”才會被處理

真:結果為非0 值,非空字符串

假:結果為空字符串或0

數字里:0為假,非0為真

字符串:只要不為空都為真

 

line ranges: 行范圍

startline,endline /pat1/,/pat2/  不支持直接給 出數字

格式

awk -F: ‘/^root\>/,/^nobody\>/{print $1}'

/etc/passwd

awk -F: ‘(NR>=10&&NR<=20){print NR,$1}'

/etc/passwd

NR:文件的行號

NF:文件每行的以符號分割的列數

awk詳解及舉例

v (5) BEGIN/END 模式

BEGIN{}:  僅在開始處理文件中的文本之前執行一次

END{} :僅在文本處理完成之后執行

 

awk 控制語句if-else

v  語法:if(condition){statement;…}[else statement]

if(condition1){statement1}else if(condition2){statement2}

else{statement3}

v  使用場景:對awk 取得的整行或某個字段做條件判

 

awk詳解及舉例

awk詳解及舉例

查看是否有防火墻以及查看端口號

awk詳解及舉例

9000端口改為默認80

awk詳解及舉例

 

awk 控制語句

v while 循環

v  語法:while(condition){statement;…}

v  條件“真”,進入循環;條件“假”, 退出循環

v  使用場景:

對一行內的多個字段逐一類似處理時使用

對數組中的各元素逐一處理時使用

打印以root開頭的,從第一列開始一直循環到最后一列,當小于最后一列時,將該字符長度和名字打印出來,然后i++,一直循環到最后一列

 

 

 

awk詳解及舉例

awk詳解及舉例

do-while 循環

v 語法:do {statement;…}while(condition)

v無論真假,至少執行一次循環體

awk詳解及舉例

-s后可以指定分隔符

awk詳解及舉例

for 循環

v 語法:for(expr1;expr2;expr3) {statement;…}

v 常見用法:

for(variable assignment;condition;iteration process)

{for-body}

v 特殊用法:能夠遍歷數組中的元素

語法:for(var in array) {for-body}

next:

提前結束對本行處理而直接進入下一行處理(awk 自身循環)

awk詳解及舉例

awk 數組

v 關聯數組:array[index-expression]

v index-expression:

(1) 可使用任意字符串;字符串要使用雙引號括起來

(2) 如果某數組元素事先不存在,在引用時,awk 會自動創建

此元素,并將其值初始化為“空串”

若要判斷數組中是否存在某元素,要使用“index in array”格 格

式進行遍歷

第一步:第一行1進來,$01abc[1]沒有賦值為空,為0;!Abc[1]1 abc[1]++1;(1,1

第二步:第二行進來,$02abc[2]沒有賦值為空,為0;!Abc[2]1abc[2]++1;(2,1

第三步:第三行進來,$01abc[1]1,因為第一步已經對abc[1]賦值!Abc[1]0abc[1]++2 ;所以(1,2

第四步:第四行2進來,$02abc[2]1,因為第二步已經對abc[2]賦值,

Abc[2]0abc[2]++2 ;所以(2,2

第五步:第五行3進來,$03abc[3]沒有賦值為空,等于0;!Abc[3]1abc[3]++1;所以(3,1

以下的同上

awk詳解及舉例

awk 數組

v 若要遍歷數組中的每個元素,要使用for 循環

v for(var in array) {for-body}

v 注意:var 會遍歷array

awk詳解及舉例

統計單詞出現的次數:(通用代碼,統計別的文件也通用)

awk詳解及舉例

統計男生和女生平均成績多少?

awk詳解及舉例

awk 函數

v 數值處理:

rand() :返回0 1 之間一個隨機數

awk詳解及舉例

awk詳解及舉例

v 字符串處理:

length([s]) :返回指定字符串的長度

sub(r,s,[t]) :對t 字符串進行搜索r 表示的模式匹配的內容,并將第一個匹

配的內容替換為s

echo "2008:08:08 08:08:08" | awk 'sub(/:/,“-",$1)'

gsub(r,s,[t]) :對t 字符串進行搜索r 表示的模式匹配的內容,并全部替換

s 所表示的內容

echo "2008:08:08 08:08:08" | awk ‘gsub(/:/,“-",$0)'

awk詳解及舉例

split(s,array,[r]) :以r 為分隔符 , 切割字符串s ,并將切割后的結果保存

array 所表示的數組中,第一個索引值為1, 第二個索引值為2,…

netstat -tan | awk '/^tcp\>/{split($5,ip,":");count[ip[1]]++}

END{for (i in count) {print i,count[i]}}'

awk詳解及舉例

awk 函數

v 自定義函數

v 格式:

function name ( parameter, parameter, ... ) {

statements

return expression

}

v 示例:

#cat fun.awk

function max(v1,v2) {

v1>v2?var=v1:var=v2

return var

}

BEGIN{a=3;b=2;print max(a,b)}

awk 腳本

v將 將awk 程序寫成腳本,直接調用或執行

v 示例:

#cat f1.awk

{if($3>=1000)print $1,$3}

#awk -F: -f f1.awk /etc/passwd

#cat f2.awk

#!/bin/awk –f

#this is a awk script

{if($3>=1000)print $1,$3}

#chmod +x f2.awk

#f2.awk –F: /etc/passwd

awk 腳本傳遞參數

v 格式:

awkfile var=value var2=value2... Inputfile

v 注意 :在BEGIN 過程 中不可用。直到 首行輸入完成以后 ,變

量才可用 。可以通過-v 參數,讓awk 在執行BEGIN 之前得到

變量的值。命令行中每一個指定的變量都需要一個-v 參數

v 示例:

#cat test.awk

#!/bin/awk –f

{if($3 >=min && $3<=max)print $1,$3}

#chmod +x test.awk

#test.awk -F: min=100 max=200 /etc/passwd

awk詳解及舉例

awk詳解及舉例awk詳解及舉例

 

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

awk
AI

成都市| 元朗区| 紫云| 肥城市| 福安市| 阿城市| 漳平市| 翼城县| 中宁县| 鄱阳县| 广宗县| 永平县| 平顶山市| 长子县| 湖南省| 浑源县| 枣阳市| 皮山县| 吉木萨尔县| 石台县| 荔波县| 日喀则市| 扎兰屯市| 黎平县| 犍为县| 云安县| 永丰县| 郑州市| 右玉县| 泸水县| 南充市| 肥西县| 靖州| 神木县| 石首市| 康平县| 芒康县| 遂溪县| 塔城市| 如东县| 百色市|