我有一个数据如下:
Mike Harrington:(510) 548-1278:250:100:175
Christian Dobbins:(408) 538-2358:155:90:201
Susan Dalsass:(206) 654-6279:250:60:50
Archie McNichol:(206) 548-1348:250:100:175
Jody Savage:(206) 548-1278:15:188:150
Guy Quigley:(916) 343-6410:250:100:175
Dan Savage:(406) 298-7744:450:300:275
Nancy McNeil:(206) 548-1278:250:80:75
John Goldenrod:(916) 348-4278:250:100:175
Chet Main:(510) 548-5258:50:95:135
Tom Savage:(408) 926-3456:250:168:200
Elizabeth Stachelin:(916) 440-1763:175:75:300
我正试着用awk打印出所有的电话号码。我找到了两种方法:
1/ awk '{print substr($2, length($2)-4, length($2)), substr($3,1,8)}' awk.data
2/ awk -F[:] '{print $2}' awk.data
两者都返回相同的结果。我理解我的第一种方法是如何工作的,但我不理解第二种方法。我知道它使用字段分隔符,但我不明白它是如何工作的。有人能帮我解释一下吗?
让我们在数据文件中选择第一条记录:
Mike Harrington:(510) 548-1278:250:100:175
awk
参数-F:
使:
成为字段分隔符,正如您所理解的那样。发生的情况是,从1
及以上编号的特殊awk
变量(前缀为$
(被分配了字段的值:
Mike Harrington $1
(510) 548-1278 $2
250 $3
100 $4
175 $5
也就是说,遇到的每一个:
都会使awk
将下面的内容分配给这些特殊变量中的一个。