歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 正則表達式中awk的學習和使用

正則表達式中awk的學習和使用

日期:2017/2/28 14:42:38   编辑:Linux教程

AWK是一種優良的文本處理工具。它不僅是linux中也是任何環境中現有的功能最強大的數據處理引擎之一。這種編程及數據庫訪問語言(其名稱得自於它的創始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首個字母)的最大功能取決於一個人所擁有的知識
一、AWK的用法:
1、在命令行模式的直接使用。 格式為: awk ‘pattern {action}’
2、將awk命令寫入腳本,並以#!/bin/awk -f命令解釋器作為腳本的首行,設置腳本的可執行權限,通過鍵入腳本名稱來調用它。格式為./testscript.awk filename。等同於shell腳本的方法。
3、將awk命令插入一個單獨文件然後執行。格式為 awk -f awkscript filename
第一種格式常見的是awk 'BEGIN {print "this is the start"}{print $1,$2,$3}END{print "this is the end"}' filename。其中BEGIN和END中間是模式,END後是動作。BEGIN和END可以省去,模式一般是匹配搜索使用
二、AWK排查錯誤常見的問題
1、確保整個AWK用單引號括起來;2、確保單引號內所有的括號或引號成對出現;3、確保用大括號括起動作語句,用小括號括起條件語句;4有時候要檢查是否有文件名或者BEGIN等
三、AWK內置字符串變量函數

gsub(r,s) 在整個$0中用s代替r gsub(r,s,t) 在整個t中用s替代r index(s,t) 返回s中字符串t的第一位置 length(s) 返回s長度 match(s,r) 測試s是否包含匹配r的字符串 split(s,a,fs) 在fs上將s分成序列a,放在數組a裡。返回段數的數值, sprint(fmt,exp) 返回經fmt格式化後的exp sub(r,s) 用$0中最左邊最長的子串代替s substr(s,p) 返回字符串s中從p開始的後綴部分 substr(s,p,n) 返回字符串s中從p開始長度為n的後綴部分


四、AWK的內置環境變量

$n 當前記錄的第n個字段,字段間由FS分隔。 $0 完整的輸入記錄。在文本中一般指行信息內容 ARGC 命令行參數的數目。 ARGIND 命令行中當前文件的位置(從0開始算)。 ARGV 包含命令行參數的數組。 CONVFMT 數字轉換格式(默認值為%.6g) ENVIRON 環境變量關聯數組。 ERRNO 最後一個系統錯誤的描述。 FIELDWIDTHS 字段寬度列表(用空格鍵分隔)。 FILENAME 當前文件名。 FNR 同NR,但相對於當前文件。 FS 字段分隔符(默認是任何空格)。可以用戶指定 IGNORECASE 如果為真,則進行忽略大小寫的匹配。 NF 當前記錄中的字段數。$NF指最後一個段內容 NR 當前記錄數。在文本中一般指多少行 OFMT 數字的輸出格式(默認值是%.6g)。 OFS 輸出字段分隔符(默認值是一個空格)。 ORS 輸出記錄分隔符(默認值是一個換行符)。 RLENGTH 由match函數所匹配的字符串的長度。 RS 記錄分隔符(默認是一個換行符)。 RSTART 由match函數所匹配的字符串的第一個位置。 SUBSEP 數組下標分隔符(默認值是\034)。

五、AWK內置操作符

= += -= *= /= %= ^= **= 賦值 如a+=10代表a+10 ?: C條件表達式,a>b?a:b表示a大於b如為真返回a,如為假返回b || 邏輯或。只要一個為真即為真。 && 邏輯與。只要一個為假即為假。需兩個同時為真才為真。 ~ ~! 匹配正則表達式和不匹配正則表達式。經常針對文本搜索 < <= > >= != == 關系運算符 空格 連接 + - 加,減 * / & 乘,除與求余 + - ! 一元加,減和邏輯非 ^ *** 求冪 ++ -- 增加或減少,作為前綴或後綴。這個一定要區分清楚++a與a++ $ 字段引用 in 數組成員


六、AWK元字符:\(轉義字符)、^ $ [] | * + ?。其中+和?只能在AWK中使用不能再sed和grep中使用。+表示匹配一個或多個字符;?表示匹配0或1個字符。

Copyright © Linux教程網 All Rights Reserved