awk--练习笔记

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








猜你喜欢

转载自blog.csdn.net/lv941002/article/details/83792309
今日推荐