grep -b -o使用变音符号给出了错误的字节偏移量

时间:2014-07-09 11:01:06

标签: bash grep

我想找到“e”的正确位置,以便以后能够切割它。但是,如果在其位置之前存在变音符号,为什么grep会返回不同的输出?

# 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

帮助会很棒!

1 个答案:

答案 0 :(得分:1)

-b的{​​{1}}选项返回字节偏移量而不是字符偏移量 由于您的输入是egrep,这是一个可变长度编码,并且ä字符不是标准ASCII字符,因此它使用UTF-8个字节而不是2个字节。

这就是字节偏移为1而不是5的原因。