awk 用内置变量 FS 来表示输入域分隔符。FS 的全称为:Input field separator
默认情况下的分隔符是空白符。如果需要指定别的单个符号或正则表达式作为分隔符,那么可以用内置变量 FS 来指定。在命令行中,可以使用 -F 选项,然后后接 FS 变量。
使用语法如下,
$ awk -F 'FS' 'commands' inputfilename
或者:
下面测试对 /etc/passwd 文件使用上述命令:$ awk -F: 'BEGIN { print "Name\tUID\tGID\tHomeDirectory"; }
> { print $1"\t"$3"\t"$4"\t"$6; }
> END { print NR, "Records Processed"; }' /etc/passwd
Name UID GID HomeDirectory
root 0 0 /root
bin 1 1 /bin
daemon 2 2 /sbin
adm 3 4 /var/adm
lp 4 7 /var/spool/lpd
... ...
beyes 500 500 /home/beyes
mockbuild 501 501 /home/mockbuild
apache 48 48 /var/www
41 Records Processed 上面命令中,使用 -F 选项指定了冒号分隔符,藉此打印了 /etc/passwd 文件中的第 1 列,第 3 列,第 4 列 以及 第 6 列 的内容。
也可以将上面的命令放在一个脚本文件中,如:
[Bash shell] 纯文本查看 复制代码 BEGIN{
FS=":";
print "Name\tUID\tGID\tHomeDirectory";
}
{
print $1"\t"$3"\t"$4"\t"$6;
}
END {
print NR,"Records Processed";
} |