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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux系统命令三剑客之 awk

發布時間:2025/5/22 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux系统命令三剑客之 awk 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

命令名稱:awk

作用:

? ? ?對文本和數據進行處理

詳細說明:

? ? ?awk 是一種編程語言,用于在linux/unix下對文本和數據進行處理。

?數據可以來自標準輸入(stdin)、一個或多個文件,或其它命令的輸出。

?它在命令行中使用,但更多是作為腳本來使用。awk有很多內建的功能,

?比如數組、函數等,這是它和C語言的相同之處,靈活性是awk最大的優勢。

語法格式:

? ? ?awk [options] 'scripts' var=value filename

常用參數:

? ? ?-F 指定分隔符(可以是字符串或正則表達式)

?-f 從腳本文件中讀取awk命令

?-v var=value 賦值一個用戶定義變量,將外部變量傳遞給awk

awk 腳本基本結構:

awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' filename

?一個awk 腳本通常由BEGIN語句+模式匹配+END語句三部分組成,這三部分都是可選項

工作原理:

第一步執行BEGIN 語句

第二步從文件或標準輸入讀取一行,然后再執行pattern語句,逐行掃描文件到文件全部被讀取

第三步執行END語句

? ? ? ? ?echo "hello world" | awk 'BEGIN{ print "welcome" } END{ print "2017-08-08" }'

? ? ? ? ?welcome

? ? ? ? ?2017-08-08

? ? ? ? ?echo -e? "hello world" | awk 'BEGIN{ print "welcome" } {print} END{ print "2017-08-08" }'

? ? ? ? ?welcome

? ? ? ? ?hello world

? ? ? ? ?2017-08-08

? ? ? ? ?#不加print參數時默認只打印當前的行

? ? ? ? ?[root@mingongge ~]# echo |awk '{ a="hello"; b="nihao"; c="mingongge"; print a,b,c; }'

? ? ? ? ?hello nihao mingongge

? ? ? ? #使用print以逗號分隔時,打印則是以空格分界

? ? ? ? ?echo |awk '{ a="mgg"; b="mingg"; c="mingongge"; print a" is "b" or "c; }'

? ? ? ? ?mgg is mingg or mingongge

? ? ? ? #awk的print語句中雙引號其實就是個拼接作用

awk 的變量使用:

??? ?內置變量

?$0? ? ? ?#當前記錄

?$1~$n? ? #當前記錄的第N個字段

?FS? ? ? ?#輸入字段分隔符(-F相同作用)默認空格

?RS? ? ? ?#輸入記錄分割符,默認換行符

?NF? ? ? ?#字段個數就是列? ??

?NR? ? ? ?#記錄數,就是行號,默認從1開始

?OFS? ? ? #輸出字段分隔符,默認空格

?ORS? ? ? #輸出記錄分割符,默認換行符? ? ?

?外部變量傳入

?[mingongge@ ~]#a=100

? ? ? ? ?[mingongge@ ~]#b=100

? ? ? ? ?[mingongge@ ~]#echo |awk '{print v1*v2 }' v1=$a v2=$b

? ? ? ? ?10000

awk 運算與判斷:

? ? ?算術運算符

? ? ? ? ?+ -? 加減

?* / & 乘 除 求余

? ? ? ? ^ *? 求冪

++ -- 增加或減少,作為前綴或后綴

[mingongge@ ~]#awk 'BEGIN{a="b";print a,a++,a--,++a;}'

? ? ? ? ?b 0 1 1

[mingongge@ ~]#awk 'BEGIN{a="0";print a,a++,a--,++a;}'

? ? ? ? ?0 0 1 1

[mingongge@ ~]#awk 'BEGIN{a="0";print a,a++,--a,++a;}'

? ? ? ? ?0 0 0 1

#和其它編程語言一樣,所有用作算術運算符進行操作,操作數自動轉為數值,所有非數值都變為0

? ? ?賦值運算符

?= += -= *= /= %= ^= **=

?正則運算符

? ? ?~ !~? 匹配正則表達式/不匹配正則表達式

? ? ?邏輯運算符 ?

? ? ? ||? &&? 邏輯或? 邏輯與

?關系運算符

? < <= > >= != =?

?其它運算符

?$? ? ? 字段引用?

?空格? ?字符串鏈接符

??:? ? ?三目運算符

?ln? ? ?數組中是否存在某鍵值

awk 正則:

? ? ?^? ? 行首定位符

?$? ? 行尾定位符

?.? ? 匹配任意單個字符

?*? ? 匹配0個或多個前導字符(包括回車)

?+? ? 匹配1個或多個前導字符

??? ? 匹配0個或1個前導字符? ?

?[]? ?匹配指定字符組內的任意一個字符/^[ab]

?[^]? 匹配不在指定字符組內的任意一個字符

?()? ?子表達式

?|? ? 或者

?\? ? 轉義符

?~,!~ 匹配或不匹配的條件語句

?x{m}? x字符重復m次

?x{m,} x字符至少重復m次

?X{m,n} x字符至少重復m次但不起過n次(需指定參數-posix或--re-interval)



本文轉自 民工哥 51CTO博客,原文鏈接:http://blog.51cto.com/mingongge/1981142

總結

以上是生活随笔為你收集整理的Linux系统命令三剑客之 awk的全部內容,希望文章能夠幫你解決所遇到的問題。

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