Awk
awk substr 索引 0
我剛剛發現
substr()
在 awk 中接受 0 或 1 作為字元串中的初始索引。我在 Gawk 5.1.0 和 MacOS awk 20070501 中對此進行了測試。awk 'BEGIN {print substr("abcd", 0, 1)}'
輸出“a”,同樣如此
awk 'BEGIN {print substr("abcd", 1, 1)}'
和
awk 'BEGIN {print substr("abcd", 2, 1)}'
輸出“b”只是為了證明沒有明顯錯誤。
除了提到 1 索引之外,我在
man
頁面或 Gawk文件中沒有看到任何內容。info
為了與文件保持一致,並考慮
index()
到第一個位置返回 1 和不匹配返回 0 的事實,始終使用 1 是一個好策略。我的問題是為什麼會出現這種二元性?另外,它是否記錄在某處?是否有其他 awk 實現可以做到這一點?
來自GNU awk 線上文件:‘substr() function’:
如果start小於 1,則 substr() 將其視為 1。(POSIX 沒有指定在這種情況下要做什麼:BWK awk 這樣做,因此 gawk 也這樣做。)如果start大於字元串中的字元數,則 substr() 返回空字元串。類似地,如果存在長度但小於或等於零,則返回空字元串。