O comando s///
espera que o parâmetro "search" seja uma expressão regular . A maioria das versões de sed
deve suportar a correspondência \b
, que é uma correspondência de largura zero em uma palavra não-palavra-chave ou em um limite de borda da palavra. "Word" neste caso é definido como um caractere que é uma letra, dígito ou sublinhado ( _
). Por exemplo, se assumirmos que a string c++
está sozinha em uma linha em seu arquivo, \b
corresponderia às seguintes posições:
- Imediatamente antes do
c
. - Entre o
c
e o primeiro+
. - Imediatamente após o último
+
.
O comando a seguir deve fornecer os resultados desejados:
sed -i 's/\bhi\b/hotel/g' hi.txt
A palavra this
não corresponderá porque o h
é precedido por um caractere de palavra ( t
) e o i
é seguido por um caractere de palavra ( s
). No entanto, a seqüência de caracteres This is hi.txt
corresponderá à segunda instância de hi
, porque o espaço ao redor e .
são caracteres não pertencentes à palavra.