1. 程式人生 > >Linux awk的用法

Linux awk的用法

什麼是awk?

awk是Linux下面的一個命令列工具,相比於sed,awk不僅可以以行為單位進行處理檔案,還能以列為單位處理檔案;同時,它還是一種程式語言,用來在Linux/Unix下對文字和資料進行處理,資料既可以來自標準輸入,也可以來自一個或者多個檔案。

處理檔案的方式

awk處理文字和資料的方式和sed相似,都是逐行掃描檔案,從第一行到最後一行,然後通過正則表示式尋找匹配的特定模式的行,並在這些行上進行你自定義的操作(操作一般是列印~)如果沒有指定匹配模式,那麼所有的資料都會被進行處理。

awk的命令格式和選項

命令列語法格式

awk     [-F     field-separator
] 'commands' input

awk指令碼檔案格式

awk  -f     awk-script-file     input-file

命令選項

-F fs:表示指定輸入檔案分隔符。
-v var=value:表示賦值一個使用者定義變數。
–asign var=value:同上。
-f scriptfile or –file scriptfile:從指令碼檔案中讀取awk命令。

使用方法

awk     [option]    '{pattern + action }'   filename

pattern:表示awk在資料中查詢的內容。
action

:表示是在找到的匹配內容時所執行的一系列指令。

模式

awk是由模式和操作組成的: pattern {action}
兩者是可選的,如果沒有模式,則action應用到全部記錄(行)。
如果沒有action,則輸出全部匹配的記錄。
預設情況下,每一個輸入行都是一條記錄,使用者可以通過RS變數或者-F選項來指定不同的分隔符進行分割。

例如:

[lzh@leap_ awk_test]$ cat file
ProductA:20
ProductB:50
ProductC:20
ProductD:30
ProductE:99
ProductF:120
[lzh@leap_ awk_test]$ awk '{print $1}'
file //只有action沒有pattern ProductA:20 ProductB:50 ProductC:20 ProductD:30 ProductE:99 ProductF:120 [lzh@leap_ awk_test]$ awk '/^Product/' file //只有pattern沒有action ProductA:20 ProductB:50 ProductC:20 ProductD:30 ProductE:99 ProductF:120

模式的型別

關於模式可以是一下的任意一個:
1. 正則表示式
2. 關係表示式
3. 模式匹配表示式(~和!)
4. BEGIN:讓使用者指定第一條輸入記錄在被處理之前所發生的動作,可以在Begin中設定全域性變數。
5. END:讓使用者在最後一條輸入記錄被讀取之後所發生的動作。

awk的常用環境變數

$n:表示當前記錄的第n個欄位,欄位之間由域分隔符分隔。
$0:表示完整的輸入記錄。
ARGC:表示命令列引數的數目。

[lzh@leap_ awk_test]$ awk 'BEGIN{ print ARGC}{print $1}' file
2
ProductA:20
ProductB:50
ProductC:20
ProductD:30
ProductE:99
ProductF:120

ARGIND:表示命令列中當前檔案的位置。
ENVIRON:表示環境變數關聯的陣列。
FILENAME:表示當前檔名。
FS:表示輸入域分隔符。

[lzh@leap_ awk_test]$ awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd | head -n 3
filename:/etc/passwd,linenumber:1,columns:7,linecontent:root:x:0:0:root:/root:/bin/bash
filename:/etc/passwd,linenumber:2,columns:7,linecontent:bin:x:1:1:bin:/bin:/sbin/nologin
filename:/etc/passwd,linenumber:3,columns:7,linecontent:daemon:x:2:2:daemon:/sbin:/sbin/nologin

FNR:表示瀏覽檔案的記錄數。

[lzh@leap_ awk_test]$ awk -F: 'BEGIN{ print FNR }{print $1,FNR}' file
0
ProductA 1
ProductB 2
ProductC 3
ProductD 4
ProductE 5
ProductF 6

OFS:表示輸出域分隔符。
ORS:表示輸出記錄分隔符。

[lzh@leap_ awk_test]$ awk -F: 'BEGIN{ OFS="###"} {print $0,$1,$2}' file
ProductA:20###ProductA###20
ProductB:50###ProductB###50
ProductC:20###ProductC###20
ProductD:30###ProductD###30
ProductE:99###ProductE###99
ProductF:120###ProductF###120

來個例子找出一個人目錄下檔案的大小,並計算出總大小。

[r[[email protected]_ awk_test]# ls -lR /home/lzh/code | awk 'BEGIN{size=0}/^-/{size+=$5; print $9,$5} END{printf("total:%d\n",size);}' | tail -n 10
test.c 233
3_class.tar 20480
3_class.tgz 2922
proc.c 0
a.out 6474
file1.txt 270
file.txt 1405
test.c 125
test.cpp 273
total:268757855

相關推薦

Linux AWK用法

科學 if語句 nts 逗號 分開 意思 ons 名稱 沒有 AWKawk:報告生成器,格式化文本輸出gawk:模式掃描和處理語言 基本語法: options:選項 program:awk的語言 var=value:賦值給var

1.12-linux三劍客之awk用法詳解

-a proc == 行號 oss url oldboyedu rap oai 1.12linux三劍客之awk用法詳解內容:1. awk執行過程2. awk命令格式3. awk用法4. awk數組第1章 awk執行過程 一直讀取到文件的最後一行第2章 awk ‘找誰{幹啥

Linuxawk用法

awk1、awk簡介:awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。2、awk格式:awk是由模式,動作,或者模式和動作的組合組成。模式patt

Linux awk用法

什麼是awk? awk是Linux下面的一個命令列工具,相比於sed,awk不僅可以以行為單位進行處理檔案,還能以列為單位處理檔案;同時,它還是一種程式語言,用來在Linux/Unix下對文字和資料進行處理,資料既可以來自標準輸入,也可以來自一個或者多個檔案。

awk用法

-a 默認值 均值 col opera tar lan 完全 ray 原文地址: http://www.grymoire.com/Unix/Awk.html#uh-0 基本結構: awk程序都是如此的一個基本結構: pattern { action } pattern指

【轉】linux awk命令詳解

column 環境變量 最後一行 工作流程 初始 文本文件 for循環 其中 cti 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切

【轉】shell expect spawn、linux expect 用法小記 看著舒服點

ssh username 英文 認識 exe 無法找到 usr 過去 操作 使用expect實現自動登錄的腳本,網上有很多,可是都沒有一個明白的說明,初學者一般都是照抄、收藏。可是為什麽要這麽寫卻不知其然。本文用一個最短的例子說明腳本的原理。 腳本代碼如下:  #####

linux expr用法

反引號 bstr 說明 字符串 -s sar 空格 nbsp numeric expr命令是一個手工命令行計數器,用於在UNIX/LINUX下求表達式變量的值,一般用於整數值,也可用於字符串。–格式為:expr Expression(命令讀入Expression 參數,計算

LINUX awk操作

linux下 文件 tmp log uri 記錄 nginx 操作 cti 公司要進行系統優化,現對nginx服務請求時間及請求量進行分析。 在linux下的nginx請求文件進行切割 獲取access log 日誌分析 1:獲取uri和請求時間記錄到tmp_0.log  

linux awk命令批量關閉系統開機自啟動服務

awk命令 批量關閉系統開機自啟動服務安裝好一個新的系統之後,為了簡化系統需要關閉一些開機自啟動的服務。蝸牛使用了grep和awk的基礎命令進行操作。作為服務器使用,新系統中需要啟動的服務大概就以下幾個crond network sshd rsyslog 查看運行級別3開機自啟動的服務chkconfig --

linux tail用法

運行 默認 偏移 用法 例子 可能 ber 讀取 導致 一.tail命令的用法 tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]參數解釋:-f 該參數用於監

[轉載]linux awk命令詳解

基本 特定 收集 comm rip 解釋 文本 工作流程 復制代碼 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各

linux awk命令詳解

列數 才會 遍歷數組 文本文件 信息 shell腳本 == game 入門 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分

Linux find用法

house min command 工作目錄 find用法 而且 use 我想 結果 Linux中find常見用法示例 ----摘抄哪裏忘記了 ·find path -option [ -print ] [ -exec -ok command ]

Linux awk命令

awk awk是一種處理文本文件的語言,是一個強大的文本分析工具,awk是三位創始人的首字母的縮寫。 語法: awk [選項參數] ‘script’ var=value file(s)或 awk [選項參數] -f scriptfile var=value file(s) 選

Linux awk 使用

space proc color nor 運算符 直接 == tex 技術分享 1、awk讀入第一行內容2、判斷是否符合模式中的條件NR<3 如果匹配,則執行對應的動作print NR $1 如果不匹配,繼續讀下一行3、繼續讀下一行4、直到讀到最後一行 默

awk用法練習

行合並 ffffff 等價 說明 abcd 技術 c99 sort ima 如:A=44echo "ABCD" | awk -v GET_A=$A ’{print GET_A}’說明:-v選項用於定義參數,這裏表示將變量A的值賦予GET_A。有多少個變量

Linux AWK學習

awk講解Awk: awk 語法: awk 模式 { 操作}模式: 正則,關系表達式,模式,BEGIN,END,操作: 由 命令、函數、表達式組成了。 文本源文件 scores.txt 執行awk的方式:1.命令行下執行 2.執行awk腳本 awk -f 腳本名 文件名3.可執行awk腳本

awk用法詳解

awk一、awk介紹 ??awk是文本三劍客之一,其實awk是一種語言,該語言的創始者定義為”生成報表和格式化文本輸出“awk有很多種版本,這裏介紹的是GUN awk(gawk) 二、awk工作原理 ??第一步:執行BEGIN{action}語句塊中的語句,該語句塊不依賴於文件,awk在執行是,將在讀取文件之