awk:
[root@oracle shellscript]# more df_h.txt
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.7G 2.4G 6.9G 26% /
/dev/sda3 25G 7.0G 16G 31% /u01
tmpfs 2.0G 0 2.0G 0% /dev/shm
#awk 可以格式化文本,然后可以利用column -t美化.
[root@oracle shellscript]# awk 'BEGIN{print "磁盘","大小"}{print $1,$2}' df_h.txt |column -t
磁盘 大小
Filesystem Size
/dev/sda1 9.7G
/dev/sda3 25G
tmpfs 2.0G
#NR 可以输出记录数
[root@oracle shellscript]# awk '{print NR,$0}' df_h.txt
1 Filesystem Size Used Avail Use% Mounted on
2 /dev/sda1 9.7G 2.4G 6.9G 26% /
3 /dev/sda3 25G 7.0G 16G 31% /u01
4 tmpfs 2.0G 0 2.0G 0% /dev/shm
#FS改变输入域分隔符,if可以按条件输出
[root@oracle shellscript]# awk -v FS=":" '{if (($1=="root"))print $1,$2}' /etc/passwd
root x
#OFS指定输出域分隔符
[root@oracle shellscript]# awk -v OFS="*" -v FS=":" '{if (($1=="root"))print $1,$2}' /etc/passwd
root*x
[root@oracle shellscript]# awk '{print NR,NF,$0}' df_h.txt
1 7 Filesystem Size Used Avail Use% Mounted on
2 6 /dev/sda1 9.7G 2.4G 6.9G 26% /
3 6 /dev/sda3 25G 7.0G 16G 31% /u01
4 6 tmpfs 2.0G 0 2.0G 0% /dev/shm
[root@oracle shellscript]# more englist_statment.txt
First Flight
Mr. Johnson had never been up in an aerophane before and he had read a lot about air accidents, so one day when a friend offered to take him for a ride i
n his own small phane, Mr. Johnson was very worried about accepting. Finally, however, his friend persuaded him that it was very safe, and Mr. Johnson boarde
d the plane.
His friend started the engine and began to taxi onto the runway of the airport. Mr. Johnson had heard that the most dangerous part of a flight were the t
ake-off and the landing, so he was extremely frightened and closed his eyes.
After a minute or two he opened them again, looked out of the window of the plane, and said to his friend, Look at those people down there. They look as
small as ants, dont they?
Those are ants, answered his friend. Were still on the ground
[root@oracle shellscript]# awk -v RS=" " '{print $0}' englist_statment.txt
First
Flight
Mr.
Johnson
had
never
been
up
in
an
awk '{if(NR==2)print $0}' df_h.txt
awk -v FS=":" '{if($3<=500){print $1} else{print $0}}' /etc/passwd
[root@oracle shellscript]# awk 'BEGIN{ for (i=1;i<=10;i++ ){print i}}'
1
2
3
4
5
6
7
8
9
10
[root@oracle shellscript]# awk -v i=1 'BEGIN{while(i<5){print i;i++}}'
1
2
3
4
do while:每次循环都会执行do后面的.
[root@oracle shellscript]# awk -v i=1 'BEGIN{do {print "test";i++} while(i<5)}'
test
test
test
test
[root@oracle shellscript]# awk 'BEGIN{for ( i=1;i<=5;i++) {if(i==3){continue} ;print i} }'
1
2
4
5
[root@oracle shellscript]# awk 'BEGIN{for ( i=1;i<=5;i++) {if(i==3){break} ;print i} }'
1
2
continue 是跳出本次循环,break 是跳出整个循环.
next是对满足条件的行不进行处理.
[root@oracle shellscript]# awk '{ if(NR==1){next}print NR,$1}' df_h.txt
2 /dev/sda1
3 /dev/sda3
4 tmpfs