字段的划分完整的问题


可以使用3个完全不同的方法使awk分隔字段。第一个方法是用空白字符来分隔字段。要实现这种方法,可将FS设置为一个空格。在这种情况下,记录的前导空白字符和结尾空白字符(空格和/或制表符)将被忽咯。因为FS的默认值为一个空格,所以这也是通常情况下awk将记录划分为字段的方法。

第二个方法是使用其他单个字符来分隔字段。例如, awk程序经常使用":"作为分隔符来访问UNIX /etc/passwd文件。当FS 表示任何单个字符时,在这个字符出现的任何地方都将分隔出另外一个字段。如果出现两个连续的分隔符,在它们之间的字段值为空串。

最后一种方法是,如果你设置了不止一个字符作为字段分隔符,它将被作为一个正则表达式来解释。也就是说,字段分隔符将是"与正则表达式匹配的最左边最长的非空的不重叠的子串"。("null字符串"是一个技术术语,我们将它定义为"空的字符串" )你可以发现以下各种不同表示之间的区别:

FS = "\t"

这个命令行将每个制表符作为一个字段分隔符,而:

FS = "\t+"

这个命令行表示用一个或多个制表符来分隔字段。使用第一种定义,下面的一行可以分为3个字段:

abc\t\tdef

相关内容