其實shell腳本的功能常常被低估。在實際應用中awk sed 等用法可以為shell提供更為強大的功能。下面我們將一下awk調用的簡單方法進行了總結。方便同學們學習:
awk的簡單用法:
第一種調用:
awk ‘BEGIN {print “start”;var=1} {print $1, $2} END{var=$3}’file
使用單引號括起awk的命令,{ }代表不同的動作中間的代碼段(紅色部分):在執行每一條記錄時都會執行。
BEGIN 代表開始輸入文件之前的操作
END 代表輸入文件結束之后的操作
第二種調用方法:
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”}
第三種調用方法:
給test.awk文件添加執行權限: chomd a+x test.awk
./test.awk file
參數和表達式使用:
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代表第一個域
系統變量 FILENAME代表當前文件名
系統變量 ARGC代表當前傳入參數的個數
系統變量 ARGV代表當前傳入參數的數組
系統變量 FS 代表字段分割符
系統變量 NF 代表當前記錄的域數量
系統變量 NR 代表當前記錄數
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 是帶有執行權限的 test.awk文件
$2 時需要檢索的文件file
運行: ./test.sh test.awk file