test.dat
data11 data12 data13 data14
data21 data22 data23 data24
data31 data32 data33 data44
data41 data42 data43 data44
$ awk '{print $1,$3}' test.dat
打印出1,3列
$ awk '{print NR,$0}' test.dat
NR表示:打印行号
$0表示:整行
$ awk '/data23/ {print NR,$0}' test.dat
打印出包含文字data23的行
$ awk 'NR==1,NR==3 {print NR,$0}' test.dat
打印出第一行到第三行的数据
$ awk '/^data21/ {print NR,$0}' test.dat
打印出以data21开头的行
$ awk '{print FILENAME, NR,$0}' test.dat
打印出文件名
将awk命令写到文件中:
{
s=$1+$2+$3;
printf "%s%5d%10.3f /n",$0,s,s/3;
}
输出为:
awk -f w.awk awk.txt
条件:
{
printf "%d",$1;
if($1%2 == 0){printf " even ";}else{ printf " odd ";}
printf "%d",$2;
if($2%2 == 0){printf " even /n";}else{ printf " odd /n";}
}
判断奇偶
{
s=0;
for(i=1;i<=NF;i++)
{
s=s+$i;
}
printf "%s wa=%4d/n",$0,s;
}
计算每列的合值
NF:列数
{
if($2 ~ /[0-9]+/){print $0;}
}
如果第二列是整数,打印
{
a[NR]=$0;
}
END{
n=NR;
for(i=n;i>=1;i--)
{
printf "a[%d]:%s/n",i,a[i];
}
}
对所有行,反向输出