在awk程序中可能最有用也是極為經常使用的命令就是print命令。在不帶任何參數的情況下,print命令將一行接一行地打印出文件中的所有數據行,下面,舉一個使用awk命令的最簡單的例子。在這個例子中awk命令將列出由管道送來(who命令的結果)的所有數據行。其實,這個命令的顯示結果與who命令沒有什麼區別:
root@promote:~# who | awk '{print}'
root tty2 2017-04-21 14:42 (:0)
敲黑板:在文件和Linux命令的結果顯示中,每行信息被指定的分隔符分隔成若干個字段,每個字段都被賦予一個唯一的標識符。其中,字段1的標識符是$1,字段2的標識符是$2等。
在awk命令中使用字段標識符會使你的一些Linux日常管理和維護工作變得相當簡單。如現在只想列出目前正在Linux系統上工作的用戶(登錄的用戶),就可以使用下列命令列出who命令顯示結果中每行的第一個字段,即目前登錄Linux系統的用戶名:
root@promote:~# who | awk '{print $1 }'
root
不僅如此,你還可以加入一些解釋性的信息以使顯示的結果更容易閱讀,如只想顯示用戶名和用戶現在使用的終端並且在每個用戶名之前加入User,在用戶名和終端之間加入 is on terminal line 字符串,命令如下:
root@promote:~# who | awk '{print "User " $1 "is on terminal line " $2}'
User root is on terminal line tty2
也可以將上面的命令略加改造只列出emp.data文件中的第2個字段(員工姓)和第4個字段(員工的工資),並且在員工姓前加上Employee,在員工的姓和員工工資之間加上 has salary 字符串。命令如下:
root@promote:~/backup# awk '{print "Employee " $2 " has salary " $4}' emp.data
Employee SMITH has salary 800
Employee ALLEN has salary 1600
……
今天就分享這麼多了,謝謝欣賞!^_~