作为文本三剑客之一,awk命令在筛选数据时有着强大的功能。使用awk命令时,由分隔符分隔的字段(列column,域field)标记$1,$2...$n称为域标识,$0为所有域(和shell中变量$符含义不同),每一行成为record,如果省略action,则默认执行print $0的操作。

    本次练习要求为:使用awk以冒号分隔获取/ettc/passwd文件第一列。

    执行 cat /etc/passwd 命令,可以查看指定文件中的所有信息,我们需要筛选出root、bin、daemon这一列的信息(如下图)

awk命令小练习_赋值

    awk常用的选项包括:

    ①-F “分隔符” 指明输入时用到的字段分隔符,默认的分隔符是若干个连续空白符;

    ②-v var=value 变量赋值

    刚好这两种选项在本次的练习中都能用上,先来看-F选项。因为是以冒号分割的,-F后面加上:(该处加不加“”都可以);筛选的是第一列,输出时的域标识为$1,即执行 awk -F: '{print $1}' /etc/passwd 命令可获取第一列(如下图)

awk命令小练习_分隔符_02

    再来看-v选项,使用-v选项时,我们可以用到awk中的内置变量FS(输入字段分隔符,默认为空白字符,功能相当于-F),即变量赋值为FS=":",执行 awk -v FS=":" '{print $1}' /etc/passwd 即可获取/ettc/passwd文件第一列(如下图)

awk命令小练习_分隔符_03