示例:
$ grep -w "edición" /tmp/apn_
edición acción__n
post-edición acción__n
$ grep -w "bar" /tmp/apn_
bar abril__n
barítono abismo__n
barógrafo abismo__n
barómetro abismo__n
barón barón__n
我只想要“bar”或“edición”,而不是其他结果,这些是子字符串。这里没有满足-w标志的用途。请建议我做什么?
答案 0 :(得分:0)
我猜这是因为您的语言环境变量未正确设置。
% LANG=en_US.UTF-8 grep -w bar as
bar abril__n
% LANG=bla grep -w bar as
bar abril__n
barítono abismo__n
barógrafo abismo__n
barómetro abismo__n
barón barón__n
答案 1 :(得分:0)
形成grep
联机帮助页:
测试是匹配的子字符串必须位于 行的开头,或前面是非单词构成字符。同样,它必须位于行的末尾或后跟a 非单词构成字符。单词构成字符是字母,数字和下划线。
似乎grep将í
等视为非单词'信件,因此他们傻瓜。
可能的解决方法是编写自己的正则表达式,例如:
grep -P "(^|[[:space:]]+|[[:punct:]]+)bar([[:space:]]+|[[:punct:]]+|$)"
您可能需要根据输入文本查看一些极端情况,但这是一般的想法。
更清洁的方法仍然是让grep理解你的语言环境。