簡(jiǎn)介
? awk
?是一種強(qiáng)大的文本處理工具,用于在命令行環(huán)境下對(duì)文件或數(shù)據(jù)流進(jìn)行逐行處理和分析。它是由 Alfred Aho、Peter Weinberger 和 Brian Kernighan 在 1977 年開發(fā)的,并以他們?nèi)说男帐厦?code>awk?在 Unix/Linux 系統(tǒng)中非常常見,也有 Windows 版本可用。
? awk
?基于一種腳本語言,語法類似于 C 語言,因此熟悉 C 或類似語言的開發(fā)者能夠輕松上手。它的主要功能是對(duì)于輸入數(shù)據(jù)的逐行處理和分析,可以通過靈活的模式匹配、操作符和函數(shù)對(duì)數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)換。awk
?的工作方式是逐行讀取輸入數(shù)據(jù),然后根據(jù)用戶指定的模式和動(dòng)作對(duì)數(shù)據(jù)進(jìn)行處理。
目錄
1. 語法
1.1. 參數(shù)選項(xiàng)
1.2. 內(nèi)置變量
1.3. 轉(zhuǎn)義符
1.4. 正則表達(dá)式
1.5. 操作符
1.6. 控制語句
1.7. 內(nèi)置函數(shù)
2. 數(shù)據(jù)過濾
2.1. 基礎(chǔ)用法
2.2. 過濾行方法
2.3. 過濾列方法
2.4. 組合過濾行、列
2.5. 輸出行號(hào)
2.6. 輸出列號(hào)
2.7. 忽略大小寫
2.8. 指定分隔符
3. 正則表達(dá)式
3.1. 模糊匹配
3.2. 精確匹配
3.3. 邏輯匹配
3.4. 范圍匹配
4. 控制語句
4.1. 條件判斷語句
4.2. 循環(huán)控制語句
5. 內(nèi)置函數(shù)方法
5.1. 字符串轉(zhuǎn)換
5.2. 構(gòu)造隨機(jī)數(shù)
5.3. 生成大數(shù)據(jù)文件
5.4. 數(shù)學(xué)運(yùn)算
5.5. BEGIN用法
5.6. END用法
1. 語法
1.1. 參數(shù)選項(xiàng)
-F:指定分隔符
-v:定義變量
-f:指定文件讀取awk代碼
-o:優(yōu)化Awk程序以提高性能
-W:兼容舊版本
-r:?jiǎn)⒂脭U(kuò)展正則表達(dá)式中的重復(fù)操作符
? ? ? ? ??文章來源地址http://www.zghlxwxcb.cn/news/detail-687436.html
1.2. 內(nèi)置變量
FS :指定字段之間的分隔符。默認(rèn)為連續(xù)的空白字符(空格和制表符)。
OFS:輸出字段分隔符。默認(rèn)為連續(xù)的空白字符(空格和制表符)。
RS :記錄分隔符,默認(rèn)為換行符。
ORS:輸出記錄分隔符,默認(rèn)為換行符。
NF :字段數(shù)量,表示當(dāng)前記錄中字段的數(shù)量。
NR :記錄數(shù)量,表示已讀取的記錄的總數(shù)。
$0 :所有的列。
$n :指定n列。$1表示第1列,$2表示第2列...
FILENAME:當(dāng)前正在處理的文件的名稱。
ARGV:包含命令行中的所有參數(shù)。
? ? ? ? ??
1.3. 轉(zhuǎn)義符
\n:換行符
\t:制表符(Tab)
\b:退格符
\r:回車符
\f:換頁符
\\:反斜杠本身
\":雙引號(hào)
\':?jiǎn)我?hào)
? ? ? ? ??
1.4. 正則表達(dá)式
.:匹配除了換行符之外的任意字符。
*:匹配前面字符的零個(gè)或多個(gè)重復(fù)。
+:匹配前面字符的一個(gè)或多個(gè)重復(fù)。
?:匹配前面字符的零個(gè)或一個(gè)重復(fù)。
^:匹配行的開頭。
$:匹配行的結(jié)尾。
[ ]:字符類,匹配方括號(hào)內(nèi)的任意一個(gè)字符。
[^ ]:否定字符類,匹配除了方括號(hào)內(nèi)字符之外的任意一個(gè)字符。
( ):分組,將括號(hào)內(nèi)的表達(dá)式作為一個(gè)整體。
|:或操作符,匹配兩個(gè)或多個(gè)表達(dá)式中的任意一個(gè)。
? ? ? ? ??
1.5. 操作符
算術(shù)操作符
+:加法
-:減法
*:乘法
/:除法
%:取余數(shù)
^:冪運(yùn)算
關(guān)系操作符
> :大于
< :小于
==:等于
!=:不等于
>=:大于等于
<=:小于等于
邏輯操作符
&&:邏輯與(and)
||:邏輯或(or)
! :邏輯非(not)
賦值操作符
= :直接賦值
+=:加法賦值
-=:減法賦值
*=:乘法賦值
/=:除法賦值
%=:取模賦值
字符串操作符
"":雙引號(hào)用于拼接字符串
~ :匹配字符串
!~:不匹配字符串
增減操作符
++:自增
--:自減
? ? ? ? ??
1.6. 控制語句
條件控制
if (條件) {代碼塊} else {代碼塊}
循環(huán)控制
# 迭代循環(huán)
for (i=1; i<=10; i+=1) {代碼塊}
# 只有條件為真,才能循環(huán)
while (條件為真) {代碼塊}
# 至少打印1次代碼
do {代碼塊} while (條件為真)
控制流語句
continue:跳出當(dāng)前循環(huán)
break:跳出整個(gè)循環(huán)
exit:終止整個(gè)Awk程序
? ? ? ? ??
1.7. 內(nèi)置函數(shù)
字符串函數(shù)
length(str)
'返回字符串 str 的長度。'
index(str, search)
'返回字符串 str 中第一次出現(xiàn) search 的位置。'
substr(str, start, length)
'返回字符串 str 中從 start 開始長度為 length 的子字符串。'
split(str, arr, sep)
'將字符串 str 按照分隔符 sep 分割,并將結(jié)果存儲(chǔ)到數(shù)組 arr 中。'
tolower(str)
'將字符串 str 轉(zhuǎn)換為小寫。'
toupper(str)
'將字符串 str 轉(zhuǎn)換為大寫。'
數(shù)值函數(shù)
int(n) :返回 n 的整數(shù)部分。
sqrt(n):返回 n 的平方根。
sin(n) :返回 n 的正弦值。
cos(n) :返回 n 的余弦值。
rand() :返回一個(gè) 0 到 1 之間的隨機(jī)數(shù)。
文件和輸入函數(shù)
getline:讀取下一行輸入并賦值給特定變量。
NF:當(dāng)前行的字段數(shù)。
NR:當(dāng)前行的行號(hào)。
FNR:當(dāng)前文件的行號(hào)。
? ? ? ? ??
2. 數(shù)據(jù)過濾
2.1. 基礎(chǔ)用法
用法:[ ] 表示可選,<> 表示必選
awk [參數(shù)] <條件> [文件]
1、查看文件內(nèi)容
# 查看文件全部?jī)?nèi)容
awk // tmp.txt
? ? ? ? ??
# 匹配包含c的行
awk /c/ tmp.txt
?
? ? ? ? ??
# 指定分隔符為逗號(hào),匹配包含c的行,只輸出第1列和第3列
awk -F , '/c/{print $1, $3}' tmp.txt
? ? ? ? ??
2、直接輸出內(nèi)容(使用BEGIN)
# 使用print直接打印內(nèi)容
awk 'BEGIN{print 1, "abc"}'
? ? ? ? ??
# 使用變量賦值
awk -v num=100 'BEGIN{print "number is", num}'
? ? ? ? ??
3、管道符過濾
# 條件判斷第1列的值
seq 10 |awk '$1 > 5 && $1 < 9'
? ? ? ? ??
2.2. 過濾行方法
1、輸出第1行
awk 'NR==1{print}' file.txt
? ? ? ? ??
2、輸出最后1行
# 倒數(shù)第2行(先獲取最后一行數(shù)據(jù),再獲取它的上一行),處理大數(shù)據(jù)文件較快
awk '{ line[NR] = $0 } END { print line[NR-1] }' file.txt
# 最后1行使用END
awk 'END{print}' file.txt
? ? ? ? ??
3、輸出第3~6行
# 通過判斷的方式獲取3~6行
awk 'NR>=3 && NR<=6' file.txt
? ? ? ? ??
4、輸出第2、6、8行數(shù)據(jù)
awk 'NR==2 || NR==6 || NR==8' file.txt
? ? ? ? ??
5、每隔3行輸出一次
awk 'NR % 3 == 0' file.txt
? ? ? ? ??
6、過濾n行后面/前面的全部行
# 輸出5行以后的全部行
awk 'NR > 5' file.txt
# 輸出3行以前的全部行
awk 'NR < 3' file.txt
? ? ? ? ??
7、不輸出空行
awk 'NF' file.txt
? ? ? ? ??
8、輸出包含關(guān)鍵字的行
# 輸出包含c的行
awk /c/ file.txt
# 輸出包含c和f的行
awk '/c/ && /f/' file.txt
# 輸出包含a或c的行
awk '/a/ || /c/' file.txt
? ? ? ? ??
9、輸出匹配到的行的下1行
# 輸出包含5的下一行
awk '/5/ {getline; print}'
# 輸出包含5的行和它的下一行
awk '/5/ {print; getline; print}'
? ? ? ? ??
10、匹配開始行和結(jié)束行
# 指定開始行:以2開頭,結(jié)束行:以4開頭。輸出這中間的行
awk '/^2/, /^4/' file.txt
? ? ? ? ??
2.3. 過濾列方法
文件內(nèi)容
1,17083,d7fce2,zhangsan,boy,18
2,13246,6de9bb,lisi,boy,39
3,8405,4c6e62,xiaomei,girl,28
4,11783,095676,wangwu,boy,20
5,23251,e14d02,zhangjie,girl,21
1、輸出第1、3、5列
awk -F , '{print $1, $3, $5}' file.txt
? ? ? ? ??
2、過濾比較多的列(例如3~20列)不建議使用awk,使用cut
# 指定分隔符為逗號(hào),過濾第3~20列
cut -d , -f 3-20 file.txt
? ? ? ? ??
3、輸出第列1為2,第2列小于50000的行
awk -F , '$1==2 && $2<50000{print}' file.txt
? ? ? ? ??
4、模糊匹配第2列以1開頭的行
# 使用 ~ 模糊匹配,^1正則匹配以1開頭
awk -F , '$2 ~ /^1/' file.txt
? ? ? ? ??
5、輸出倒數(shù)第2列、最后1列
# $NF表示最后1列,倒數(shù)第2列-1,倒數(shù)第2列-2...
awk -F , '{print $(NF-1), $NF}' file.txt
? ? ? ? ??
6、不輸出第3列和最后1列
# 將第3列和最后1列替換為空
awk -F , '{$3=""; $NF=""; print}' file.txt
? ? ? ? ??
7、每列順序隨意控制
awk '{print $3, $1, $2}' file.txt
? ? ? ? ??
8、在最后添加一列字符串($0可以換成其他列)
awk '{print $0, "ooo"}' file.txt
? ? ? ? ??
2.4. 組合過濾行、列
1、輸出2~3行的第1列
awk -F , 'NR>1 && NR<4{print $1}' file.txt
? ? ? ? ??
2、輸出第4行的第1列和最后1列
awk -F , 'NR==4{print $1, $NF}' file.txt
? ? ? ? ??
3、輸出前3行,不包含最后1列
awk -F , 'NR<4{$NF=""; print}' file.txt
? ? ? ? ??
4、輸出第1列等于5的第3列的值
awk -F , '$1==5{print $3}' file.txt
? ? ? ? ??
2.5. 輸出行號(hào)
1、輸出每行的行號(hào)
# NR輸出行號(hào),$0輸出全部?jī)?nèi)容
awk '{print NR, $0}' file.txt
? ? ? ? ??
2、輸出過濾關(guān)鍵字行的行號(hào)
# 過濾包含e的行,輸出行號(hào)和內(nèi)容
awk '/e/{print NR, $0}' file.txt
? ? ? ? ??
3、輸出包含關(guān)鍵字的總行數(shù)
# 過濾包含e的行,每匹配到一次n+1,最后打印n
awk '/e/ {n++} END{print n}' file.txt
? ? ? ? ??
4、輸出總行數(shù)
# 輸出文件總行數(shù)
awk 'END{print NR}' file.txt
# 輸出文件總行數(shù),不包含空行
awk 'NF!=0 {n++} END{print n}' file.txt
? ? ? ? ??
2.6. 輸出列號(hào)
1、遍歷所有列
awk -F , '{ for (i=1; i<=NF; i++) print "第" NR "行," "第" i "列: " $i }' file.txt
? ? ? ? ??
2、獲取每行的列數(shù)
# 只輸出列數(shù)
awk -F , '{print NF}' file.txt
# 輸出內(nèi)容
awk -F , '{print "第" NR "行, 共" NF "列: ", $0}' file.txt
# 不輸出內(nèi)容
awk -F , '{print "第" NR "行, 共" NF "列"}' file.txt
? ? ? ? ??
2.7. 忽略大小寫
- ?忽略大小寫(IGNORECASE=1)
awk 'BEGIN{IGNORECASE=1} /C/' file.txt
? ? ? ? ??
2.8. 指定分隔符
- awk 默認(rèn)分割符為單個(gè)或多個(gè)空格、以及制表符。
1、使用默認(rèn)匹配分隔符
awk '{print $1}' file.txt
? ? ? ? ??
2、指定匹配分隔符
# 方法一:參數(shù) -F
awk -F ',' '{print $1}' file.txt
# 方法二:BEGIN
awk 'BEGIN{FS=","} {print $1}' file.txt
? ? ? ? ??
3、OFS 指定輸出分隔符(默認(rèn)是空格)
awk -F ',' '{OFS="|"; print $1, $2}' file.txt
? ? ? ? ??
3. 正則表達(dá)式
3.1. 模糊匹配
1、匹配以 ab 開頭的行
awk /^ab/ file.txt
? ? ? ? ??
2、匹配以 bc?結(jié)尾的行
awk /bc$/ file.txt
? ? ? ? ??
3.2. 精確匹配
1、只匹配a與c之間擁有一個(gè)字符的行
awk /a.c/ file.txt
? ? ? ? ??
2、匹配a與c之間任意字符的行,不包含ac
awk /a.+c/ file.txt
? ? ? ? ??
3、匹配a與c之間任意字符的行,包含ac
awk /a*c/ file.txt
? ? ? ? ??
4、邏輯匹配單個(gè)字符,只匹配包含 abc 或 adc 的行
# b和d任取一個(gè)都可以
awk '/a(b|d)c/' file.txt
? ? ? ? ??
5、邏輯匹配多個(gè)字符,可匹配:abc、adc、abbc、addc、abbbc...
awk '/a(b|d)+c/' file.txt
? ? ? ? ??
3.3. 邏輯匹配
or:匹配包含 bd 或 ac 的行
awk '/bd|ac/' file.txt
?
? ? ? ? ??
and:匹配包含ab且包含c的行
awk '/ab/ && /c/' file.txt
? ? ? ? ??
not:匹配不包含ab的行
awk '!/ab/' file.txt
? ? ? ? ??
3.4. 范圍匹配
1、匹配方括號(hào)中的任一字符
# 匹配任意包含d或e的行
awk /[de]/ file.txt
# 匹配除了包含d或e的全部行
awk '!/[de]/' file.txt
# 匹配除了abd以外的其他行
awk '/[^abd]/' file.txt
? ? ? ? ??
2、匹配數(shù)字
# 匹配包含數(shù)字的行
awk /[0-9]/ file.txt
# 匹配不包含數(shù)字的行
awk '!/[0-9]/' file.txt
? ? ? ? ??
3、匹配小寫字母
# 匹配包含小寫字母的行
awk /[a-z]/ file.txt
# 匹配不包含小寫字母的行
awk '!/[a-z]/' file.txt
? ? ? ? ??
4、匹配大寫字母
# 匹配包含大寫字母的行
awk /[A-Z]/ file.txt
# 匹配不包含大字母的行
awk '!/[A-Z]/' file.txt
? ? ? ? ??
5、組合用法
# 匹配所有包含字母的行(不區(qū)分大小寫)
awk /[A-Za-z]/ file.txt
# 匹配所有包含字母、數(shù)字的行
awk /[A-Za-z0-9]/ file.txt
?
? ? ? ? ??
6、匹配多個(gè)相同字符
# 匹配ab,且ab連續(xù)的a為2個(gè)以上
awk /a{2}b/ file.txt
# 匹配ab,且ab連續(xù)的b為2個(gè)以上
awk /ab{2}/ file.txt
? ? ? ? ??
7、范圍匹配數(shù)字、字母
# 匹配連續(xù)出現(xiàn)小寫字母2次以上的行
awk /[a-z]{2}/ file.txt
# 匹配連續(xù)出現(xiàn)數(shù)字2次以上的行
awk /[0-9]{2}/ file.txt
?
? ? ? ? ??
4. 控制語句
4.1. 條件判斷語句
- awk '{if (條件判斷) <為真> ;else <為假>}'
1、判斷數(shù)字大小
awk '{if ($1 < 18) print $1 "歲,未成年" ;else print $1 "歲,已成年"}'
? ? ? ? ??
2、判斷第1列的值小于4,或者最后1列等于5
awk '{if ($1 < 4 || $NF == 5) print $0}'
? ? ? ? ??
3、多分支判斷,沒有elif,通過else if構(gòu)造(判斷第1列的值為4、6、9)
# vim test.awk
{
if($1==4)
{print "yes"}
else if($1==6)
{print "yes"}
else if($1==9)
{print "yes"}
else
{print "no(" $1 ")"}
}
?
? ? ? ? ??
4、三元表達(dá)式
語法
awk '{
result = (條件1) ? 結(jié)果1 :
(條件2) ? 結(jié)果2 :
(條件3) ? 結(jié)果3 :
條件以外的結(jié)果
print result
}' file.txt
案例
# vim test.awk
{
label = ($2 < 60) ? "不及格":
($2 < 71) ? "及格":
($2 < 85) ? "良好":
($2 < 101) ? "優(yōu)秀":
"分?jǐn)?shù)超出范圍"
print $1, label
}
? ? ? ? ??
4.2. 循環(huán)控制語句
1、for 循環(huán)
- awk 'BEGIN{for (條件) {循環(huán)體代碼}}'
# 循環(huán)5次
awk 'BEGIN{for (i=1; i<=5; i+=1) {print "循環(huán)" i}}'
awk 'BEGIN{for (i=1; i<=5; i+=1) {print "循環(huán)" i} print "不在循環(huán)體中"}'
? ? ? ? ??
跳出循環(huán)
- awk 'BEGIN{for (條件) {if (條件) {跳出當(dāng)前循環(huán)}; if (條件) {跳出整個(gè)循環(huán)}; 循環(huán)體代碼塊}}'
# 如果i=2,跳出當(dāng)前循環(huán);如果i=6,跳出整個(gè)循環(huán)
awk 'BEGIN{for (i=1; i<=10; i+=1) {if (i==2) {continue}; if (i==6) {break}; print "循環(huán)" i}}'
? ? ? ? ??
2、while 循環(huán)
- awk 'BEGIN{while (條件) {循環(huán)體代碼}}'
# 循環(huán)5次
awk 'BEGIN{i=1; while (i<=5) {print "循環(huán)" i; i+=1}}'
awk 'BEGIN{i=1; while (i<=5) {print "循環(huán)" i; i+=1} print "不在循環(huán)體中"}'
? ? ? ? ??
跳出循環(huán)
- awk 'BEGIN{while (循環(huán)條件) {if (判斷條件) {跳出當(dāng)前循環(huán)}; if (判斷條件) {跳出整個(gè)循環(huán)};?循環(huán)體代碼}}'
# 如果i=2,跳出當(dāng)前循環(huán);如果i=6,跳出整個(gè)循環(huán)
awk 'BEGIN{i=0; while (i<=10) {i+=1; if (i==2) {continue}; if (i==6) {break}; print "循環(huán)" i}}'
? ? ? ? ??
5. 內(nèi)置函數(shù)方法
5.1. 字符串轉(zhuǎn)換
1、全部轉(zhuǎn)換為大寫(toupper)
awk '{print toupper($0)}' file.txt
? ? ? ? ??
2、全部轉(zhuǎn)換為小寫(tolower)
awk '{print tolower($0)}' file.txt
? ? ? ? ??
3、單詞首字母大寫
awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))tolower(substr($i,2))}print}' file.txt
? ? ? ? ??
4、浮點(diǎn)數(shù)取整(int)
awk '{print int($1)}'
? ? ? ? ??
5.2. 構(gòu)造隨機(jī)數(shù)
1、生成0~1的隨機(jī)數(shù)
awk 'BEGIN{srand(); print rand()}'
? ? ? ? ??
2、生成0~100的隨機(jī)數(shù)
awk 'BEGIN{srand(); print int(rand()*101)}'
? ? ? ? ??
3、生成100~200的隨機(jī)數(shù)
awk 'BEGIN{srand(); print int(rand()*101) + 100}'
? ? ? ? ??
4、生成100次500~800的隨機(jī)數(shù)
awk -v num=100 'BEGIN{srand(); for (i=1; i<=num; i+=1) {print int(rand()*301) + 500}}'
? ? ? ? ??
5、生成6位數(shù)隨機(jī)數(shù)
awk 'BEGIN{srand(); printf "%06d\n", int(rand()*1000000)}'
? ? ? ? ??
6、生成6位隨機(jī)字符串
awk 'BEGIN{srand(); print rand()}' |md5sum |cut -c 1-6
? ? ? ? ??
5.3. 生成大數(shù)據(jù)文件
1、生成1000w行簡(jiǎn)單數(shù)據(jù)
# 直接使用for循環(huán)1000w次,打印需要輸出的內(nèi)容
awk 'BEGIN { for (i=1; i<=10000000; i++) print "abc" }'
? ? ? ? ??
2、生成1GB簡(jiǎn)單數(shù)據(jù)
# 使用while無限循環(huán),再利用head讓其最大輸出1GB大小
awk 'BEGIN{w=0; while (w<1) {print "abc"}}' |head -c 1G
? ? ? ? ??
3、生成復(fù)雜數(shù)據(jù)
BEGIN{ OFS=","; srand(); for (i=1; i<=100; i+=1)
{
col1 = i
col2 = "abc"
col3 = sprintf("%c", int(rand() * 26) + 97)
col4 = int(rand() * 100)
col5 = "2000-01-01"
print col1, col2, col3, col4, col5
}
}
- 第1列:從1開始疊加
- 第2列:固定字符"abc"
- 第3列:一個(gè)隨機(jī)字母
- 第4列:0~100的隨機(jī)數(shù)
- 第5列:固定字符"2000-01-01"?
? ? ? ? ??
5.4. 數(shù)學(xué)運(yùn)算
1、求和
awk '{sum += $1} END{print sum}'
? ? ? ? ??
2、求平均數(shù)
awk '{sum += $1} END{print sum/NR}'
? ? ? ? ??
3、求最大值
# NR==1 表示初始化變量max為第一個(gè)數(shù)值
awk 'NR==1 {max=$1} $1>max {max=$1} END{print max}'
? ? ? ? ??
4、求最小值
# NR==1 表示初始化變量min為第一個(gè)數(shù)值
awk 'NR==1 {min=$1} $1<min {min=$1} END {print min}'
? ? ? ? ??
5、數(shù)學(xué)運(yùn)算
# 第1列的值 + 2(加法)
awk '{print $1 + 2}'
# 第1列的值 - 2(減法)
awk '{print $1 - 2}'
# 第1列的值 * 2(乘法)
awk '{print $1 * 2}'
# 第1列的值 / 2(除法)
awk '{print $1 / 2}'
# 第1列的值 ^ 2(冪運(yùn)算)
awk '{print $1 ^ 2}'
# 第1列的值 % 2(取余)
awk '{print $1 % 2}'
? ? ? ? ??
5.5. BEGIN用法
- BEGIN 是在處理輸入之前執(zhí)行一次。
1、初始化變量
awk 'BEGIN{OFS=","; a=1; b=2; print a, b}'
? ? ? ? ??
2、設(shè)置分隔符
awk 'BEGIN{FS=","} {print $2}'
? ? ? ? ??
3、輸出表頭信息
awk 'BEGIN{print "數(shù)字如下:"} {print $0}'
? ? ? ? ??
4、調(diào)用外部命令
awk 'BEGIN{system("echo $RANDOM |md5sum")}'
? ? ? ? ??
5.6. END用法
- END 是在處理完所有輸入行之后執(zhí)行一次。
1、輸出結(jié)束后的字符串
awk '{print $0} END{print "結(jié)束后執(zhí)行"}'
? ? ? ? ??
2、輸出計(jì)算完成后的結(jié)果
# {sum += $1}是在持續(xù)進(jìn)行,END后面的代碼則是所有事情做完后最后執(zhí)行
awk '{sum += $1} END{print sum}'
文章來源:http://www.zghlxwxcb.cn/news/detail-687436.html
? ? ? ? ??
到了這里,關(guān)于Linux命令awk詳細(xì)用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!