完全匹配,除了前导和尾随特殊字符(包括空格)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了完全匹配,除了前导和尾随特殊字符(包括空格)相关的知识,希望对你有一定的参考价值。
我试图让awk搜索完全匹配,除了前导和尾随特殊字符和空格。
EG
寻找'你好':
Matches:
$%#@!@@[Hello ^%.!
hello world
但WONT匹配:
helloworld
我有部分匹配工作如下:
(tolower($0) ~ /hello/)
但无法弄清楚如何做特殊字符。
“特殊”字符是指非字母/数字字符:
!@#$%^&*()-[]:"><'.,/?|~`
答案
如果你相信awk
的词边界
$ awk 'tolower($0) ~ /yhelloy/' file
$%#@!@@[Hello ^%.!
hello world
但会过滤掉“helloworld”
我认为y
只有gawk
支持,否则你可以使用<
和>
左右边界......
另一答案
$ cat ip.txt
helloworld
hello_world
$%#@!@@[Hello ^%.!
hello world
$ grep -iE '(^|[^[:alnum:]])hello([^[:alnum:]]|$)' ip.txt
hello_world
$%#@!@@[Hello ^%.!
hello world
-iE
用于不区分大小写的匹配并使用ERE(^|[^[:alnum:]])
行或非字母/数字字符的开头hello
字符串匹配([^[:alnum:]]|$)
后跟非字母/数字字符或行尾
如果你包括_
以及一个有效的角色,那么
$ grep -iw 'hello' ip.txt
$%#@!@@[Hello ^%.!
hello world
以上是关于完全匹配,除了前导和尾随特殊字符(包括空格)的主要内容,如果未能解决你的问题,请参考以下文章