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