linux shell awk命令的簡單使用方法

2021-08-15 09:01:38 字數 2888 閱讀 1883

1 awk是乙個強大的檔案分析工具

2 使用方法

awk''

其中 pattern 表示

awk

在資料中查詢的內容,而

action

是在找到匹配內容時所執行的一系列命令。花括號(

{})不需要在程式中始終出現,但它們用於根據特定的模式對一系列指令進行分組。

pattern

就是要表示的正規表示式,用斜槓括起來。

awk是以檔案的一行為處理單位的。

awk每接收檔案的一行,然後執行相應的命令,來處理文字

3 命令列方式

awk[-f  field-separator]  

'commands'

input-

file

(s)

commands 是真正

awk命令,

[-f域分隔符

]是可選的。

input-

file

(s)是待處理的檔案。

在awk中,檔案的每一行中,由域分隔符分開的每一項稱為乙個域。通常,在不指名

-f域分隔符的情況下,預設的域分隔符是空格。

4 例項

編輯userinfo檔案,檔案內容為

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

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/bin/sh

命令:

cat userinfo | awk -f ':' ''

root

daemon

binsys

sync

games

$0則表示所有域

,$1表示第乙個域

,$n表示第

n個域。

預設域分隔符是"空白鍵

" 或 

"[tab]

鍵所以$1表示賬戶

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

shell,

而賬戶與

shell

之間以tab

鍵分割命令

cat userinfo | awk -f ':' ''

root /bin/bash

daemon /bin/sh

bin /bin/sh

sys /bin/sh

sync /bin/sync

games /bin/sh

如果只是顯示userinfo

的賬戶和賬戶對應的shell,

而賬戶與

shell

之間以逗號分割

,而且在所有行新增列名

name,shell,

在最後一行新增

"nameend,shellend"。命令

cat userinfo | awk -f ':' 'begin end'

user,shell

root,/bin/bash

daemon,/bin/sh

bin,/bin/sh

sys,/bin/sh

sync,/bin/sync

games,/bin/sh

userend,shellend

awk中同時提供了

print

和printf

兩種列印輸出的函式。

其中print函式的引數可以是變數、數值或者字串。字串必須用雙引號引用,引數用逗號分隔。如果沒有逗號,引數就串聯在一起而無法區分。這裡,逗號的作用與輸出檔案的分隔符的作用是一樣的,只是後者是空格而已。

printf函式,其用法和

c語言中

printf

基本相似

,可以格式化字串

,輸出複雜時,

printf

更加好用,**更易懂。 搜尋

userinfo檔案有

root

關鍵字的所有行,並顯示對應的shell 命令

awk -f ':' '/root/' userinfo

/bin/bash

這裡指定了action

新建立檔案file,內容為

qwer	= 123.456.123.456

asdf = 12:21:12:21:12:21

取出qwer=後面的值,取出asdf=後面的值,並將值轉化為16進製制

abc=$(grep -w 'qwer' file)

abc=$

echo $abc

idx=0

cache=$(grep -w 'asdf' file)

cache=$

while [ $idx -lt 6 ]

do data=$(printf %02x $)

cache=$

if [ $idx -eq 0 ]

then

def=$data

else

def="$def"":""$data"

fi let "idx+=1"

done

echo def=$def

echo `grep -w 'asdf' file | awk -f '=' '' | awk -f ':' ''`

Linux shell awk陣列使用

一.陣列格式 陣列是乙個包含一系列元素的表.格式如下 abc 1 xiaohong abc 2 xiaolan 解釋 abc 為陣列名稱 1 2 為陣列元素下標,可以理解為陣列的第1個元素 陣列的第2個元素 xiaohong xiaolan 元素內容 陣列 arrray index expressi...

Linux shell awk陣列使用

一.陣列格式 陣列是乙個包含一系列元素的表.格式如下 abc 1 xiaohong abc 2 xiaolan 解釋 abc 為陣列名稱 1 2 為陣列元素下標,可以理解為陣列的第1個元素 陣列的第2個元素 xiaohong xiaolan 元素內容 陣列 arrray index expressi...

Linux shell awk模式使用

以冒號為分隔符,顯示 etc passwd以r開頭的行的第一段 root wei awk awk f r etc passwd root以冒號為分隔符,顯示 etc passwd以nologin結尾的行的第一段 root wei awk awk f nologin etc passwd bindae...