linux的awk命令如何用?

2021-07-14 09:19:27 字數 2605 閱讀 9485

awk:用於一行中分成數個「字段」來處理。適合處理 	小型資料。

執行模式:awk '條件型別1 條件型別2 ...' filename

# last | awk '' <== 檢視登入者的資料,只顯示登入名和ip位址,並以[tab]隔開

awk 的內建變數

變數名稱 代表的含義

nf 每一行($0)擁有的字段總數

nr 當前 awk 所處理的是 「第幾行」 資料

fs 當前分隔符,預設空格鍵

awk 的邏輯運算子

運算單元 代表含義

> 大於

< 小於

>= 大於或等於

<= 小於或等於

== 等於

!= 不等於

範例:cat /etc/passwd | awk ' $3 < 10 ' <== 檔案/etc/passwd是以":"分隔的,檢視第三欄小於10的資料,並且只顯示帳號與第三欄

ps -aux | grep pyt | awk ''檢視python的所有程序,並且顯示程序號pid。
假設last -n 5的輸出如下

[root@www ~]# last -n 5

<==僅取出前五行

root pts/1

192.168.1.100 tue feb 10

11:21 still logged in

root pts/1

192.168.1.100 tue feb 10

00:46 - 02:28 (01:41

)root pts/1

192.168.1.100 mon feb 9

11:41 - 18:30 (06:48

)dmtsai pts/1

192.168.1.100 mon feb 9

11:41 - 11:41 (00:00

)root tty1 fri sep

514:09 - 14:10 (00:01)

如果只是顯示最近登入的5個帳號

#last -n 5 | awk''

root

root

root

dmtsai

root

awk工作流程是這樣的:讀入有'\n'換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,$1表示第乙個域,$n表示第n個域。預設域分隔符是"空白鍵" 或 "[tab]鍵",所以$1表示登入使用者,$3表示登入使用者ip,以此類推。

如果只是顯示/etc/passwd的賬戶

#cat /etc/passwd |awk  -f ':'

''root

daemon

binsys

這種是awk+action的示例,每行都會執行action。

-f指定域分隔符為':'。

如果只是顯示/etc/passwd的賬戶和賬戶對應的shell,而賬戶與shell之間以tab鍵分割

#cat /etc/passwd |awk  -f ':'

''root /bin/bash

daemon /bin/sh

bin /bin/sh

sys /bin/sh

如果只是顯示/etc/passwd的賬戶和賬戶對應的shell,而賬戶與shell之間以逗號分割,而且在所有行新增列名name,shell,在最後一行新增"blue,/bin/nosh"。

cat /etc/passwd |awk  -f ':'

'begin end

'name,shell

root,/bin/bash

daemon,/bin/sh

bin,/bin/sh

sys,/bin/sh

....

blue,/bin/nosh

awk工作流程是這樣的:先執行beging,然後讀取檔案,讀入有/n換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,$1表示第乙個域,$n表示第n個域,隨後開始執行模式所對應的動作action。接著開始讀入第二條記錄······直到所有的記錄都讀完,最後執行end操作。

搜尋/etc/passwd有root關鍵字的所有行

#awk -f: '

/root/

' /etc/passwd

root:x:

0:0:root:/root:/bin/bash

這種是pattern的使用示例,匹配了pattern(這裡是root)的行才會執行action(沒有指定action,預設輸出每行的內容)。

搜尋支援正則,例如找root開頭的: awk -f: '/^root/' /etc/passwd

搜尋/etc/passwd有root關鍵字的所有行,並顯示對應的shell

# awk -f: '

/root/

' /etc/passwd

/bin/bash

這裡指定了action

如何在Linux中使用awk命令

文字處理是unix的核心。從管道到 proc子系統,一切都是檔案 的理念貫穿於作業系統和所有基於它構造的工具。正因為如此,輕鬆地處理文字是乙個期望成為linux系統管理員甚至是資深使用者的最重要的技能之一,而 awk是通用程式語言之外最強大的文字處理工具之一。最簡單的awk的任務是從標準輸入中選擇字...

linux命令 awk學習

我們在面試中經常被問到的linux命令 就都會包括awk命令的使用,下面我向大家總結awk命令的詳細使用。希望能給大家一些幫助。在國內很多大型公司面試後台程式設計師的時候無一例外都會問到下面這個題目 請統計某個apache或者nginx 內的log檔案,並求出裡面ip數的top10 當然,這個問題不...

linux 常用awk命令

linux awk命令詳解awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。awk有3個不同版本 awk nawk和gawk,未作特別說明...