教程集 www.jiaochengji.com
教程集 >  脚本编程  >  shell  >  正文 awk基础知识(2)-处理多个字段

awk基础知识(2)-处理多个字段

发布时间:2014-08-14   编辑:jiaochengji.com
awk基础知识,处理多个字段,awk 非常善于处理分成多个逻辑字段的文本

awk 非常善于处理分成多个逻辑字段的文本,还可以引用 awk 脚本中每个独立的字段。
打印系统上所有用户帐户的列表:
$ awk -F":" '{ print $1 }' /etc/passwd
上例中,调用awk时,使用 -F 选项来指定 ":" 作为字段分隔符。awk 处理 print $1 命令时,它会打印出在输入文件中每一行中出现的第一个字段。
以下是另一示例:
$ awk -F":" '{ print $1 $3 }' /etc/passwd

以下是该脚本输出的摘录:
halt7
operator11
root0
shutdown6
sync5
bin1
....etc.

如您所见,awk 打印出 /etc/passwd 文件的第一和第三个字段,它们正好分别是用户名和用户标识字段。现在,当脚本运行时,它并不理想--在两个输出字段之间没有空格!如果习惯于使用 bash 或 python 进行编程,那么您会指望 print $1 $3 命令在两个字段之间插入空格。然而,当两个字符串在 awk 程序中彼此相邻时,awk 会连接它们但不在它们之间添加空格。以下命令会在这两个字段中插入空格:
$ awk -F":" '{ print $1 " " $3 }' /etc/passwd

以这种方式调用 print 时,它将连接 $1、" " 和 $3,创建可读的输出。
还可以插入一些文本标签:
$ awk -F":" '{ print "username: " $1 "ttuid:" $3" }' /etc/passwd

这将产生以下输出:
username: halt          uid:7
username: operator      uid:11
username: root          uid:0
username: shutdown      uid:6
username: sync          uid:5
username: bin           uid:1
....etc.

您可能感兴趣的文章:
awk基础知识(2)-处理多个字段
awk基础知识(1)-使用规则
awk基础知识(4)-begin和end块
awk基础知识(3)-调用外部脚本
awk编程基础知识(5)-规则表达式
awk基础知识(9)-处理记录
awk基础知识(7)-变量
awk基础知识(8)-运算符
awk基础知识(11)-数组下标字符串化
shell 字符串的查找与替换

[关闭]
~ ~