patsplit vs dividir em gawk

0

No manual do gawk, encontrei duas funções patsplit e split .

  • Eu estou querendo saber quais são as diferenças deles?

  • Eu entendo o objetivo de split , mas qual é o objetivo de patsplit ?

Obrigado.

    
por Tim 18.07.2017 / 18:06

2 respostas

2

split corresponde à divisão de campo padrão, usando FS (ou uma expressão regular específica, se especificada): ela usa uma expressão regular para corresponder a separadores de campo . Se você especificar FS=, , os campos serão divididos ao separar as vírgulas. As vírgulas não acabarão no conteúdo do campo, elas acabarão na matriz de separadores (se especificada).

patsplit corresponde à divisão de padrão de campo, que pode ser usada em vez da divisão de campo padrão, fornecendo um valor para FPAT : se usar uma expressão regular para corresponder a conteúdo de campo . Por exemplo, se você estiver interessado apenas nos números fornecidos em qualquer registro, poderá especificar FPAT="[[:digit:].]+" ou usar patsplit com essa expressão regular para corresponder a todos os conjuntos contíguos de dígitos e manipulá-los como campos.

    
por 18.07.2017 / 18:16
2

Em split , você fornece um separador; Considerando que em patsplit você corresponde a um padrão entre separadores:

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

enquanto

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

Tags