filename文件內容爲一下內容server
[root@server1 ~]# cat filename
+ 0.1 4 0 cbr 1000 ------- 2 4.0 5.0 0 0
- 0.1 4 0 cbr 1000 ------- 2 4.0 5.0 0 0
+ 0.108 4 0 cbr 1000 ------- 2 4.0 5.0 1 1
- 0.108 4 0 cbr 1000 ------- 2 4.0 5.0 1 1
r 0.115333 4 0 cbr 1000 ------- 2 4.0 5.0 0 0
+ 0.115333 0 1 cbr 1000 ------- 2 4.0 5.0 0 0
- 0.115333 0 1 cbr 1000 ------- 2 4.0 5.0 0 0
+ 0.116 4 0 cbr 1000 ------- 2 4.0 5.0 2 2
- 0.116 4 0 cbr 1000 ------- 2 4.0 5.0 2 2
r 0.123333 4 0 cbr 1000 ------- 2 4.0 5.0 1 1
[root@server1 ~]# awk '/^(+|-)/' filename #顯示以+或者-號開頭的行 [root@server1 ~]# awk '/^[+-]/' filename 這樣也能夠顯示和前面同樣的效果
+ 0.1 4 0 cbr 1000 ------- 2 4.0 5.0 0 0
- 0.1 4 0 cbr 1000 ------- 2 4.0 5.0 0 0
+ 0.108 4 0 cbr 1000 ------- 2 4.0 5.0 1 1
- 0.108 4 0 cbr 1000 ------- 2 4.0 5.0 1 1
+ 0.115333 0 1 cbr 1000 ------- 2 4.0 5.0 0 0
- 0.115333 0 1 cbr 1000 ------- 2 4.0 5.0 0 0
+ 0.116 4 0 cbr 1000 ------- 2 4.0 5.0 2 2
- 0.116 4 0 cbr 1000 ------- 2 4.0 5.0 2 2get
[root@server1 ~]# awk '/0$/' filename #顯示以0結尾的行# awk '$NF ~ /0/' filename效果和前面的同樣
+ 0.1 4 0 cbr 1000 ------- 2 4.0 5.0 0 0
- 0.1 4 0 cbr 1000 ------- 2 4.0 5.0 0 0
r 0.115333 4 0 cbr 1000 ------- 2 4.0 5.0 0 0
+ 0.115333 0 1 cbr 1000 ------- 2 4.0 5.0 0 0
- 0.115333 0 1 cbr 1000 ------- 2 4.0 5.0 0 0awk
[root@server1 ~]# awk '$2 ~ /0.115333/' filename #顯示第二條記錄中含有0.115333的行
r 0.115333 4 0 cbr 1000 ------- 2 4.0 5.0 0 0
+ 0.115333 0 1 cbr 1000 ------- 2 4.0 5.0 0 0
- 0.115333 0 1 cbr 1000 ------- 2 4.0 5.0 0 0變量
[root@server1 ~]# awk 'BEGIN{OFS="%"}{print $1,$2}' filename # filename 經過設置輸出分隔符(OFS="%")修改輸出格式。
+%0.1
-%0.1
+%0.108
-%0.108
r%0.115333
+%0.115333
-%0.115333
+%0.116
-%0.116
r%0.123333date
[root@server1 ~]# awk 'BEGIN {"date"|getline d; print d}' #經過管道把date的執行結果送給getline,並賦給變量d,而後打印。
Tue Dec 10 22:22:26 CST 2013file
awk能夠使用自身變量NR和FNR來處理多個文件。程序
NR:表示awk開始執行程序後所讀取的數據行數。數據
FNR:awk當前讀取的記錄數,其變量值小於等於NR(好比當讀取第二個文件時,FNR是從0開始從新計數,而NR不會)。文件
[root@server1 ceshi]# awk '{print NR $0}' file1 file2 #對於NR,讀取不一樣文件,NR是一直++的。
1file1
2file1
3file1
4file1
5file1
6file2
7file2
8file2
9file2
10file2
11file2管道
[root@server1 ceshi]# awk '{print FNR $0}' file1 file2 #可是對於FNR,讀取不一樣文件,開始下一個文件的時候FNR又從1開始了。 1file1 2file1 3file1 4file1 5file1 1file2 2file2 3file2 4file2 5file2 6file2