2014-01-27 242 views
0

我只想grep的整个单词。问题是文件包含非英文字符,因此grep -w不起作用(f.e.在搜索“bc”时匹配“aąbcć”)。我也不能写任何工作正则表达式。有谁能够帮助我?grep只匹配与非英文字符的整个单词

+0

FYI:HTTP:// stackoverflow.com/questions/9618647/allowing-non-latin-characters-with-regex – mcsilvio

+0

你的语言环境是什么? 'env | grep“可以LC \ | LANG'' –

+0

'LC_MESSAGES = pl_PL.UTF-8 LC_COLLATE = pl_PL.UTF-8 LANG = pl_PL.UTF-8 LANGUAGE = pl_PL:EN LC_CTYPE = pl_PL.UTF-8 ' – BUZZY

回答

0

尝试使用单词边界的grep:

grep "\<bc\>" file 
+0

'echo -e“aąbcć\ nbc”| grep“\ ”'给我两场比赛。有一件事改变了:第一行不再着色。 – BUZZY

+0

很奇怪,因为我只能从这个命令中获得1个匹配。 – anubhava

+0

但我正在'Mac OSX'上测试它。 – anubhava

0

需要GNU的grep:grep -P '(^|\s)\Kbc(?=$|\s)' file

用awk,不知这会工作:

awk -v word="bc" '{for (i=1; i<=NF; i++) if ($i == word) {print; break}}' file 
+0

我需要整行存在单词。 – BUZZY

+0

不幸的是,“bc”在awk解决方案中没有通过测试。 – BUZZY