AWK chapter2

GITHUB

2.1 模式

  • 模式匯總

    1. BEGIN{ statements }

      在輸入被讀取之前,statements執(zhí)行一次
    2. END{ statements }

      當(dāng)所有輸入讀取完畢后,statements被執(zhí)行一次
    3. expression{ statements }

      當(dāng)expression為真時(shí),statements被執(zhí)行一次
    4. /regular expression/ or compound pattern or pattern1,pattern2 { statements }

      當(dāng)正則被匹配或者復(fù)合表達(dá)式為真或者范圍匹配時(shí),執(zhí)行后面statements
  • 將表達(dá)式用作模式

    運(yùn)算符 意義
    < 小于
    <= 小于或等于
    == 等于
    != 不等于
    >= 大于或等于
    > 大于
    匹配
    !~ 不匹配
  • 字符串匹配模式

    1. /regrxpr/

      當(dāng)當(dāng)前輸入行包含一段被regrxpr匹配的子字符串時(shí),該模式被匹配
    2. expression ~ /regexpr/

      expression 包含一段被regexpr匹配的子字符串時(shí),該模式被匹配
    3. expression !~ /regexpr/

      不包含被regexpr匹配的子字符串時(shí),模式被匹配
  • 正則表達(dá)式

    1. 元字符

      \ ^ $ . [ ] | ( ) * + ?
    2. 基本正則表達(dá)式
      1. 一個(gè)不是元字符的字符 eg. A
      2. 一個(gè)匹配特殊符號(hào)的轉(zhuǎn)義字符 eg. \t
      3. 一個(gè)被引用的元字符 eg. *
      4. ^ 匹配一行的開始
      5. $ 匹配一行的結(jié)束
      6. . 匹配任意一個(gè)字符
      7. 一個(gè)字符類[ABC] 匹配字符A B 或 C
      8. 字符類的縮寫形式 [A-Za-z] 匹配單個(gè)字母
      9. 一個(gè)互補(bǔ)的字符類 [^0-9] 匹配任意一個(gè)不是數(shù)字的字符
    3. 運(yùn)算符組合
      1. 選擇:A|B 匹配A或B
      2. 拼接:AB 匹配后面緊跟B 的A
      3. 閉包:A* 匹配0個(gè)或者多個(gè)A
      4. 正閉包: A+ 匹配1個(gè)或者多個(gè)A
      5. 零或者一: A? 匹配空字符串或者A
      6. 括號(hào):被(r)匹配的字符串,與r所匹配的字符串相同
  • 復(fù)合模式

  • 范圍模式
    由第一個(gè)匹配成功時(shí)開始,到第二個(gè)匹配成功時(shí)結(jié)束

    eg. FNR == 1, FNR == 5 {print FILRNAME ": " $0}

  • 模式總結(jié)

模式 例子 匹配
BEGIN BEGIN 輸入被讀取之前
END END 輸入被讀取完之后
expression $3 < 100 第三個(gè)字段小于100的行
string-matching /Asia/ 含有Asia的行
compound 3 < 100 &&4 == "Asia" 第三個(gè)字段小于100 且 第四個(gè)字段為Asia
range NR == 10, NR == 20 輸入的第10行至第20行

2.2 動(dòng)作

  • 動(dòng)作
    expression 包括常量 變量 賦值 函數(shù)調(diào)用等等
print expression-list

printf(format, expression-list)

if (expression) 
    statements

if (expression) 
    statements 
else 
    statements

while (expression)
    statements

for (expression; expression; expression)
    statements

for (expression in array)
    statements

do 
    statements 
while (expression)

break 
continue
  • 內(nèi)建變量
變量 意義 默認(rèn)值
ARGC 命令行參數(shù)個(gè)數(shù) -
ARGV 命令行參數(shù)數(shù)組 -
FILENAME 當(dāng)前輸入文件名 -
FNR 當(dāng)前輸入文件記錄個(gè)數(shù) -
FS 控制輸入行的字段分割符 " "
NF 當(dāng)前記錄的字段個(gè)數(shù) -
NR 到目前位置讀的記錄數(shù)量 -
OFMT 數(shù)值的輸出格式 "%.6g"
OFS 輸出字段分隔符 " "
ORS 輸出記錄的分隔符 "\n"
RLENGTH 被函數(shù)match匹配的字符串長(zhǎng)度 -
RS 控制輸入行的記錄分隔符 "\n"
RSTART 被函數(shù)match匹配的字符串的開始 -
SUBSEP 下標(biāo)分隔符 "\034"
  • 內(nèi)建算數(shù)函數(shù)
函數(shù) 返回值
atan2(y,x) y/x的反正切值,定義域在-π 到 π之間
cos(x) x的余弦值,x以弧度為單位
exp(x) x的指數(shù)函數(shù)
int(x) x的整數(shù)部分
log(x) x的自然對(duì)數(shù)
rand() 返回一個(gè)隨機(jī)數(shù)r
sin(x) x的正弦值
sqrt(x) x的方根
srand(x) x為新的隨機(jī)種子
  • 內(nèi)建字符串函數(shù)
函數(shù) 描述
gsub(r,s) 將$0中的所有出現(xiàn)的r替換為s,返回替換的次數(shù)
gsub(r,s,t) 將字符串t中所有出現(xiàn)的r替換為s,返回替換發(fā)生的次數(shù)
index(s,t) 返回字符串t在s中第一次出現(xiàn)的位置,t沒有出現(xiàn),返回0
length(s) 返回s包含的字符個(gè)數(shù)
  • 流程控制語句
    • {statements}
      語句組
    • if (expression) statements
      如果expression為真,執(zhí)行statements
    • if (expression) statements else statements
      如果expression為真,執(zhí)行statements,否則執(zhí)行statements
    • while (expression) statements
      如果expression為真,執(zhí)行statements;然后重復(fù)前面過程
    • for (expressionl; expression; expression) statements
    • for (variable in array) statements
    • do statements while (expression)
    • break
    • continue
    • next
    • exit
    • exit expression
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,711評(píng)論 0 5
  • awk: grep,sed,awk grep:文本過濾 sed:文本編輯 awk:文本格式化工具; 1 什么是aw...
    木林森閱讀 1,906評(píng)論 0 16
  • 九、正則表達(dá)式 原文:Regular Expressions譯者:飛龍協(xié)議:CC BY-NC-SA 4.0自豪地采...
    布客飛龍閱讀 1,044評(píng)論 0 5
  • 當(dāng)年齡漸長(zhǎng),越來越發(fā)現(xiàn)自己曾經(jīng)吹的牛逼是那么弱不禁風(fēng),曾經(jīng)的原則種種也是一塌涂地。和同學(xué)和老友的日常聊天中,...
    Mr叁石閱讀 802評(píng)論 0 3
  • 2015.10.25 今天大遷和二澈死賴著到我家來做火鍋,屋子里烏煙瘴氣,還不小心折斷了我昨天才買的干花,不過也有...
    豚肩不掩豆閱讀 169評(píng)論 0 0

友情鏈接更多精彩內(nèi)容