判断与循环
AWK中的IF语句
lu@lu-VirtualBox:~$ vi num.txt
lu@lu-VirtualBox:~$ cat num.txt
1987 2009
2008 1990
1999 2012
2010 1000
lu@lu-VirtualBox:~$ awk '{if ($1<$2) print $2 "too high"}' num.txt
2009too high
2012too high
lu@lu-VirtualBox:~$ cat awkif814.awk
BEGIN{
FS=":"
#print " ai" $1
}
{
#if($1>$2)
print $1
}
lu@lu-VirtualBox:~$ awk -f awkif814.awk num.txt
1987:2009
2008:1990
1999:2012
2009
2010
2012
lu@lu-VirtualBox:~$ awk '{if($1>100) print $1 "bad"; else print "ok"}' num.txt
1987:2009bad
2008:1990bad
1999:2012bad
ok
1987bad
2010bad
2008bad
BEGIN{
n=5
i=n
while(i>=1){
j=n
while(j>=i){
printf "a"
j--;
}
printf "\n"
i--;
}
}
lu@lu-VirtualBox:~$ awk -f whilet.awk
a
aa
aaa
aaaa
aaaaa
lu@lu-VirtualBox:~$ cat address.org.txt
Jimmy the Weasel
100 Pleasant Drive
San Francisco, CA 12345
Big Tony
200 Incognito AVE.
Sururbia, WA 67890
Ollir zhang
Nanjing University
Gulou, Nanjing, 210000
lu@lu-VirtualBox:~$ awk -f awkaddr.awk address.org.txt
Jimmy the Weasel, 100 Pleasant Drive, San Francisco, CA 12345
Big Tony, 200 Incognito AVE., Sururbia, WA 67890
Ollir zhang , Nanjing University, Gulou, Nanjing, 210000
BEGIN{
FS="\n"
RS="\n\n"
OFS="@"
ORS=""
}
{
# print $1 ", " $2 ", " $3
# print NF,NR
#print $1 ", " $2 ", " $3
x=1
while(x<NF){
print $x "\t"
x++
}
print $NF "\n"
}
lu@lu-VirtualBox:~$ awk -f awkaddr2.awk address.org.txt
Jimmy the Weasel 100 Pleasant Drive San Francisco, CA 12345
Big Tony 200 Incognito AVE. Sururbia, WA 67890
Ollir zhang Nanjing University Gulou, Nanjing, 210000
FUNCTION实例
lu@lu-VirtualBox:~$ cat add.awk
function add(x,y,sum)
{
sum=x+y
return sum
}
{
m=2
n=3
x=add(m,n)
printf("%d+%d=%d\n",m,n,x)
}
lu@lu-VirtualBox:~$ echo "" | awk -f add.awk
2+3=5
function swap(x,y,temp)
{
temp=x
x=y
y=temp
sum=x+y
}
{
m=2
n=3
swap(m,n)
printf("%d,%d\n",m,n)
}
lu@lu-VirtualBox:~$ echo "" | awk -f swap.awk
2,3