其实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 “\” file |awk -F “:” ‘print $2’ `
echo $var
(2)#!/bin/bash
var= ` ./$1 $2 `
其中: $1 是带有执行权限的 test.awk文件
$2 时需要检索的文件file
运行: ./test.sh test.awk file