ARGV用法
之二
FILENAME用法
ENVIRON用法
注:
ARGV数组由ARGV[0]....ARGV[ARGC-1]组成,第一个元素是0而不是1,这与AWK中的般数组不同
ENVIROND数组在shell与AWK的交互中非常有用,使用ENVIRON["PARA_NAME"]来获取环境变量$PARA_NAME的值,其中引号“”不可少!
5、标准输出与重定向
⑴、输出重定向
print items > output-file
print items >> output-file
print items | command
⑵、特殊文件描述符:
/dev/stdin:标准输入
/dev/sdtout: 标准输出
/dev/stderr: 错误输出
/dev/fd/N: 某特定文件描述符,如/dev/stdin就相当于/dev/fd/0;
实例:
1 2
# awk -F" " '{printf "%-15s %i\n",$1,$3 > "/dev/stderr" }' /etc/issue # awk -F" " '{printf "%-15s %i\n",$1,$3 > "/dev/null" }' /etc/issue
6、awk的操作符:
⑴、算术操作符:
-x: 负值
+x: 转换为数值;
x^y:
x**y: 次方
x*y: 乘法
x/y:除法
x+y:
x-y:
x%y:
实例
⑵、字符串操作符:
只有一个,而且不用写出来,用于实现字符串连接;
⑶、 赋值操作符:
=
+=
-=
*=
/=
%=
^=
**=
++
--
需要注意的是,如果某模式为=号,此时使用/=/可能会有语法错误,应以/[=]/替代;
⑷、布尔值
awk中,任何非0值或非空字符串都为真,反之就为假;
⑸、 比较操作符:
x < y True if x is less than y.
x <= y True if x is less than or equal to y.
x > y True if x is greater than y.
x >= y True if x is greater than or equal to y.
x == y True if x is equal to y.
x != y True if x is not equal to y.
x ~ y True if the string x matches the regexp denoted by y.
x !~ y True if the string x does not match the regexp denoted by y.
subscript in array True if the array array has an element with the subscript subscript.
⑺、表达式间的逻辑关系符:
&&
||
实例:
⑻、条件表达式:
selector?if-true-exp:if-false-exp
if selector; then
if-true-exp
else
if-false-exp
fi
实例
⑼、函数调用:
function_name(para1,para2)
7、控制语句
⑴、 if-else
语法:
if (condition) {then-body} else {[ else-body ]}
实例:
1 2 3 4
#awk '{if ($3==0) {print $1, "Adminitrator";} else { print $1,"Common User"}}' /etc/passwd #awk -F: '{if ($1=="root") print $1, "Admin"; else print $1, "Common User"}' /etc/passwd #awk -F: '{if ($1=="root") printf "%-15s: %s\n", $1,"Admin"; else printf "%-15s: %s\n", $1, "Common User"}' /etc/passwd #awk -F: -v sum=0 '{if ($3>=500) sum++}END{print sum}' /etc/passwd