【Linux学习】强大的文本分析工具AWK
之所以叫 AWK 是因為其取了三位創始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
?
調用AWK:
1.命令行方式(常用)
awk [-F ?field-separator] ?'commands' ?input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可選的。 input-file(s) 是待處理的文件。
在awk中,文件的每一行中,由域分隔符分開的每一項稱為一個域。通常,在不指名-F域分隔符的情況下,默認的域分隔符是空格。
2.shell腳本方式
將所有的awk命令插入一個文件,并使awk程序可執行,然后awk命令解釋器作為腳本的首行,一遍通過鍵入腳本名稱來調用。
相當于shell腳本首行的:#!/bin/sh
可以換成:#!/bin/awk
3.將所有的awk命令插入一個單獨文件,然后調用:
awk -f awk-script-file input-file(s)
其中,-f選項加載awk-script-file中的awk腳本,input-file(s)跟上面的是一樣的。
?
使用方法
awk '{pattern + action}' {filenames}盡管操作可能會很復雜,但語法總是這樣,其中 pattern 表示 AWK 在數據中查找的內容,而 action 是在找到匹配內容時所執行的一系列命令。花括號({})不需要在程序中始終出現,但它們用于根據特定的模式對一系列指令進行分組。 pattern就是要表示的正則表達式,用斜杠括起來。
awk語言的最基本功能是在文件或者字符串中基于指定規則瀏覽和抽取信息,awk抽取信息后,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。
通常,awk是以文件的一行為處理單位的。awk每接收文件的一行,然后執行相應的命令,來處理文本。
?
因為awk其實也是一種編程語言,所以他內置的語法可以直接使用print(類似python2),print也是日常使用中最常見的一種方式。
print函數的參數可以是變量、數值或字符串常量。字符串必須用雙引號括起來。參數之間用逗號分隔,如果沒有逗號,所有的參數就會被串在一起。逗號等價于OFS中的值,默認情況下是空格。OFS是內建變量。
工作流程:
awk工作流程是這樣的:先執行BEGING,然后讀取文件,讀入有/n換行符分割的一條記錄,然后將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,$1表示第一個域,$n表示第n個域,隨后開始執行模式所對應的動作action。接著開始讀入第二條記錄······直到所有的記錄都讀完,最后執行END操作。
主要掌握print的例子就好。
?
參考鏈接:
https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html(好文)
https://blog.csdn.net/xiyangyang052/article/details/44926793(補充)
https://www.cnblogs.com/kevingrace/p/8481965.html(很多操作示例)
https://www.runoob.com/linux/linux-comm-awk.html(菜鳥教程)
總結
以上是生活随笔為你收集整理的【Linux学习】强大的文本分析工具AWK的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1500万新股民跑步入场,又有人开始唱多
- 下一篇: 申请信用卡任职部门怎么填 各类职业任职部