曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3581|回复: 0
打印 上一主题 下一主题

-F 选项与 FS (域分隔符)

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-2-24 16:53:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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";
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-17 14:05 , Processed in 0.067915 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表