當(dāng)前位置:首頁 > 學(xué)習(xí)資源 > 講師博文 > Shellz中awk的簡單用法
其實shell腳本的功能常常被低估。在實際應(yīng)用中awk sed 等用法可以為shell提供更為強大的功能。下面我們將一下awk調(diào)用的簡單方法進(jìn)行了總結(jié)。方便同學(xué)們學(xué)習(xí):
awk的簡單用法:
第一種調(diào)用:
awk ‘BEGIN {print “start”;var=1} {print $1, $2} END{var=$3}’file
使用單引號括起awk的命令,{ }代表不同的動作中間的代碼段(紅色部分):在執(zhí)行每一條記錄時都會執(zhí)行。
BEGIN 代表開始輸入文件之前的操作
END 代表輸入文件結(jié)束之后的操作
第二種調(diào)用方法:
awk -f test.awk file
test.awk文件的寫法:
#! /usr/bin/awk –f
BEGIN {print “start”; var=1}
{ print $1, $2;
arg=$3; //////可以用分號分開不同的操作。
print arg
}
END {printf(“the test is over\n”}
第三種調(diào)用方法:
給test.awk文件添加執(zhí)行權(quán)限: chomd a+x test.awk
./test.awk file
參數(shù)和表達(dá)式使用:
1)
-F “:” 代表域的分割符是 冒號。
awk -F “:” ‘{print $1, $2}’ file
或者使用FS變量
awk ‘BEGIN{FS=”:”; var=2} {print $1, $2} ‘ file
2)支持 printf的格式化輸出
awk -F “:” ‘{printf(“%d, %d\n”, $1, $2}’ file
3) $0代表所有的域
$1代表第一個域
系統(tǒng)變量 FILENAME代表當(dāng)前文件名
系統(tǒng)變量 ARGC代表當(dāng)前傳入?yún)?shù)的個數(shù)
系統(tǒng)變量 ARGV代表當(dāng)前傳入?yún)?shù)的數(shù)組
系統(tǒng)變量 FS 代表字段分割符
系統(tǒng)變量 NF 代表當(dāng)前記錄的域數(shù)量
系統(tǒng)變量 NR 代表當(dāng)前記錄數(shù)
print NR;print NF;
4)支持if else 語句。
{
If ($2 >= 0)
{ print “$2 is >= 0”;
print “$2 is greate 0”
}
else
{
print “$2 is < 0”;
print “$2 is < 0”
}
}
5)可以在shell腳本中使用:
可以方便的將awk獲得值賦值給一個變量。
(1)#!/bin/bash
var=` grep -e “\
echo $var
(2)#!/bin/bash
var= ` ./$1 $2 `
其中: $1 是帶有執(zhí)行權(quán)限的 test.awk文件
$2 時需要檢索的文件file
運行: ./test.sh test.awk file
华清图书馆
0元电子书,限时免费申领10本华清图书PDF版
扫码关注华清远见公众号