如何使用sed仅匹配孤独的角色(不是单词的一部分)?例如,我想匹配" a"的任何实例。在一个文件中,但不匹配" a" in" bag"或"包含"。
答案 0 :(得分:1)
使用GNU sed,您可以要求a
被字边界包围。使用\b
表示a word boundary。例如:
$ echo 'a bag a part a.' | sed 's/\ba\b/A/g'
A bag A part A.
除\b
之外,GNU sed以及其他seds支持word-begin,\<
和word-end,\>
。例如:
$ echo 'a bag a part a.' | sed 's/\<a\>/A/g'
A bag A part A.
为了定义单词边界,单词字符可以是任何字母数字字符或下划线。边界是单词字符与非单词字符相邻的位置。
如果没有单词边界扩展,可以使用三个替换命令完成相同的操作:
$ echo 'a bag a part a.' | sed -E -e 's/^a([^[:alnum:]_])/A\1/g' -e 's/^a$/A/g' -e 's/([^[:alnum:]_])a([^[:alnum:]_])/\1A\2/g'
A bag A part A.