Awk

patsplit vs split in gawk

  • June 27, 2021

在 gawk 手冊中,我發現了兩個函式patsplitsplit.

  • 我想知道他們的區別是什麼?
  • 我明白目的是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

引用自:https://unix.stackexchange.com/questions/379320