字段的划分完整的问题

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

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

最后一种方法是,假设你设置了不止一个字符作为字段分隔符,它将被作为一个正則表達式来解释。也就是说,字段分隔符将是"与正則表達式匹配的最左边最长的非空的不重叠的子串"。

("null字符串"是一个技术术语,我们将它定义为"空的字符串" )你能够发现下面各种不同表示之间的差别:

FS = "\t"

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

FS = "\t+"

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

abc\t\tdef

參考资料:http://www.linuxawk.com/communication/468.html

posted on 2018-02-05 14:06  yjbjingcha  阅读(123)  评论(0编辑  收藏  举报

导航