patsplitとgawkに分割

patsplitとgawkに分割

Gawkのマニュアルで私は2つの機能を見つけpatsplitましたsplit

  • 違いが何なのか知りたいです。

  • 目的は理解しています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

関連情報