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中同時提供了
和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...