如何搜索/ Grep文件中的特定单词?

时间:2015-04-05 13:28:04

标签: shell search grep

示例:

$ 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标志的用途。请建议我做什么?

2 个答案:

答案 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理解你的语言环境。