曲径通幽论坛

标题: -F 选项与 FS (域分隔符) [打印本页]

作者: beyes    时间: 2012-2-24 16:53
标题: -F 选项与 FS (域分隔符)
awk 用内置变量 FS 来表示输入域分隔符。FS 的全称为:Input field separator

默认情况下的分隔符是空白符。如果需要指定别的单个符号或正则表达式作为分隔符,那么可以用内置变量 FS 来指定。在命令行中,可以使用 -F 选项,然后后接 FS 变量。

使用语法如下,
$ awk -F 'FS' 'commands' inputfilename

或者:
$ awk 'BEGIN{FS="FS";}'


下面测试对 /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";
}





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2