Awk
patsplit vs split in gawk
在 gawk 手冊中,我發現了兩個函式
patsplit
和split
.
- 我想知道他們的區別是什麼?
- 我明白目的是
split
什麼,但目的是patsplit
什麼?謝謝。
split
使用(或指定的特定正則表達式,如果指定)匹配預設欄位拆分FS
:它使用正則表達式來匹配欄位分隔符。如果您指定FS=,
,則欄位將通過分隔逗號分隔 - 逗號本身不會出現在欄位內容中,它們將出現在分隔符數組中(如果指定)。
patsplit
匹配欄位模式拆分,可以通過為 指定值來代替預設欄位拆分FPAT
:它使用正則表達式來匹配欄位內容。例如,如果您只對任何記錄中給出的數字感興趣,您可以指定FPAT="[[:digit:].]+"
或使用patsplit
該正則表達式來匹配所有連續的數字集,並將它們作為欄位進行操作。
在
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