 Shellz中awk的簡單用法
							時間:2018-09-21      來源:未(wei)知
							Shellz中awk的簡單用法
							時間:2018-09-21      來源:未(wei)知 
							其實shell腳(jiao)本的功能常常被低估。在實際應用(yong)中awk sed 等用(yong)法可以(yi)為(wei)shell提供更為(wei)強(qiang)大的功能。下面我(wo)們將一下awk調(diao)用(yong)的簡單方法進行了(le)總結。方便(bian)同學們學習:
awk的簡單用法:
第一種調用:
awk ‘BEGIN {print “start”;var=1} {print $1, $2} END{var=$3}’file
使用單引號括起(qi)awk的命令,{ }代表不同的動作(zuo)中間的代碼段(紅色部分):在執(zhi)行(xing)每(mei)一條記錄時都會執(zhi)行(xing)。
BEGIN 代表開始(shi)輸入文件之前(qian)的操(cao)作
END 代(dai)表(biao)輸入文件結束之后的操作
第二(er)種調(diao)用方法:
awk -f test.awk file
test.awk文件(jian)的寫(xie)法:
#! /usr/bin/awk –f
BEGIN {print “start”; var=1}
{ print $1, $2;
arg=$3; //////可以用分(fen)號分(fen)開(kai)不(bu)同(tong)的(de)操作(zuo)。
print arg
}
END {printf(“the test is over\n”}
第三種調(diao)用方(fang)法(fa):
給test.awk文(wen)件添(tian)加執(zhi)行權限: chomd a+x test.awk
./test.awk file
參數和表達式使用:
1)
-F “:” 代表域的分割符是 冒號。
awk -F “:” ‘{print $1, $2}’ file
或者使用FS變(bian)量
awk ‘BEGIN{FS=”:”; var=2} {print $1, $2} ‘ file
2)支(zhi)持 printf的(de)格(ge)式化輸出
awk -F “:” ‘{printf(“%d, %d\n”, $1, $2}’ file
3) $0代表所(suo)有的域
$1代表(biao)第(di)一個域
系統變量 FILENAME代表當前文件名
系統變量 ARGC代表(biao)當(dang)前傳入參數的個數
系統變量(liang) ARGV代表當(dang)前傳入參數的(de)數組
系統變量 FS 代表字段分割符
系統變量(liang) NF 代(dai)表當(dang)前記錄的域數(shu)量(liang)
系統(tong)變量 NR 代表當前(qian)記錄數(shu)
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)可(ke)以在shell腳(jiao)本中使用:
可以方(fang)便的(de)將(jiang)awk獲得值(zhi)賦值(zhi)給一(yi)個(ge)變量。
(1)#!/bin/bash
 var=` grep -e “\
echo $var
(2)#!/bin/bash
var= ` ./$1 $2 `
其中: $1 是帶有執行權限的 test.awk文件
$2 時需(xu)要檢索的文件file
運(yun)行: ./test.sh test.awk file