patsplit 与 gawk 中的 split

patsplit 与 gawk 中的 split

在gawk手册中,我发现了两个函数patsplitsplit

  • 我想知道他们的区别是什么?

  • 目的我明白split,但是目的是什么patsplit

谢谢。

答案1

在 中split,您提供一个分隔符;而在patsplit你匹配一个模式之间分隔符:

$ echo 'foo,bar' | awk '{n = split($0,a,/,/); for(i=1;i<=n;i++) print a[i]}'
foo
bar

然而

$ echo 'foo,bar' | awk '{n = patsplit($0,a,/[^,]*/); for(i=1;i<=n;i++) print a[i]}'
foo
bar

答案2

split匹配默认的字段分割,使用FS(或特定的正则表达式,如果指定):它使用正则表达式来匹配字段分隔符。如果您指定FS=,,则字段将通过逗号分隔 - 逗号本身不会出现在字段内容中,它们将出现在分隔符数组中(如果指定)。

patsplit匹配字段模式分割,可以通过为 指定一个值来代替默认的字段分割FPAT:它使用正则表达式来匹配字段内容。例如,如果您只对任何记录中给出的数字感兴趣,则可以指定FPAT="[[:digit:].]+"或使用patsplit该正则表达式来匹配所有连续的数字组,并将它们作为字段进行操作。

相关内容