我想提取由空格分隔的相鄰單詞的所有可能組合 - 一個,兩個,三個項目。也就是說,轉換這一行:如何從一行中提取一個/兩個/三個相鄰的單詞?
a bc de fghi j
到
a
bc
de
fghi
j
a bc
bc de
de fghi
fghi j
a bc de
bc de fghi
de fghi j
如何使用awk儘可能快地做到這一點?我完全陷入困境,不知道。我想到了像match($0, /^([a-z]+)$|([^\s]+\s[^\s]+)|([^\s]+\s[^\s]+\s[^\s]+)/, arr)
這樣的東西,但在這種情況下無法工作。
編輯 基本問題是如何結合使用split
。例如,
{split($0, arr, ",");
for (i = 1; i <= length(arr); i++) {
print arr[i]
}
for (i = 1; i <= length(arr) - 1; i++) {
print arr[i] " " arr(i+1)
}
for (i = 1; i <= length(arr) - 2; i++) {
print arr[i] " " arr[i+1] " " arr[i+2]
}
}
給Call to undefined function
。有很多方法可以做到這一點。這取決於你製作的邏輯。 提示:使用數組 – 2014-12-02 07:50:58
第6行有錯字。將'arr(i + 1)'更改爲'arr [i + 1]'。 – merlin2011 2014-12-02 08:43:35
呃,那太急了!謝謝 – 2014-12-02 08:55:37