2014-07-09 22 views
0

我想找到「e」的正確位置以便稍後能夠切割它。但是爲什麼grep在它的位置之前存在元音變化時會返回不同的輸出結果?grep -b -o給出了與變音符號的錯誤字節偏移

# echo "falle" | egrep -b -o 'e' 
4:e 
# echo "fälle" | egrep -b -o 'e' 
5:e 

# locale -a 
C 
C.UTF-8 
de_DE.utf8 
en_US.utf8 
POSIX 

幫助會很好!

+0

請將您的標題翻譯成英文。 – Mat

+0

在我的Ubuntu上,當我剪切和粘貼你的例子時,它給出了'4:e'。 (egrep(GNU grep)2.16)你在什麼操作系統上? – Jotne

回答

1

-b選項egrep返回字節偏移量而不是字符偏移量。
由於您的輸入是UTF-8,它是一種可變長度編碼,並且ä字符不是標準ASCII字符,所以它使用2字節而不是1字節。

這就是爲什麼字節偏移量是5而不是4

相關問題