AWK,参照GNU的说法,用来从文件中选取特定记录,并在记录上做展示操作。
awk是一个工具,更是一门文字处理语言。下面咱们借助win10 subsystem for linux梳理下awk。
工具属性
试验一:初识awk
MicroWin10-1123:/mnt/c/Users/work/test # awk -F: '{print $1,NF,NR,FS}' /etc/passwd
root 7 1 :
bin 7 2 :
daemon 7 3 :
lp 7 4 :
mail 7 5 :
news 7 6 :
uucp 7 7 :
games 7 8 :
man 7 9 :
wwwrun 7 10 :
挨个解释下,awk会对输入的内容(当前是/etc/passwd文件)的每一行进行操作。
-F":" 指定分隔符;
$1代表行记录里按照分隔符":",分割后第一个字段,$2等以此类推。$0代表整行。
'{print $1}',为awk的action;
NF,内置变量,代表一个记录里的字段数;
NR,内置变量,代表记录数(注意因为awk是逐行做操作,所以NR是递增的)
FS,内置变量,代表字段分隔符,对应之前的-F。
试验二:常用场景
题1:格式化输出用户信息
MicroWin10-1123:/mnt/c/Users/work/test # awk -F":" '{print "username:"$1"\tuid:"$3}' /etc/passwd
username:root uid:0
username:bin uid:1
user