substituir palavras em um arquivo [duplicado]

1

Suponha que a palavra child teve que ser substituída por son em um arquivo que consiste em sentenças (não em uma lista de palavras).

Não é uma substituição de sequência direta; por exemplo, o seguinte não deve acontecer:

children não deve ser alterado para sonren

mas o seguinte deve acontecer:

child. deve ser alterado para son.

child! deve ser alterado para son!

Basicamente, o texto a ser substituído deve ser uma palavra independente e os separadores de palavras devem ser preservados.

Como isso pode ser feito sem codificação para cada separador de palavras possível?

    
por Yashas 24.01.2018 / 15:21

1 resposta

2

Você pode conseguir isso com o comando sed :

sed -i 's/\<child\>/son/' /path/to/your/file

-i[SUFFIX], --in-place[=SUFFIX]

edit files in place (makes backup if extension supplied). The default operation mode is to break symbolic and hard links. This can be changed with --follow-symlinks and --copy.

Considerando seu exemplo, com o seguinte arquivo de teste:

child
child.
child!
children

Execute o comando e você terá:

son
son.
son!
children

EDITAR: Para gerenciar o caso em que você tem mais de uma vez a palavra child na mesma linha, você precisa adicionar g no comando: sed -i 's/\<child\>/son/g' /path/to/your/file

    
por 24.01.2018 / 15:29