SED no Mac OS X

2

Estou usando um MacBook Pro e quero encontrar e substituir uma determinada palavra por outra com o comando sed , mas ela não faz alterações. Qual é o problema?

sed 's/\<cat\>/dog/g' tt.txt
    
por ABC 15.03.2015 / 20:45

3 respostas

0

Contanto que seu texto tenha a sequência exata \<cat\> , ele deve ser substituído. Mas eu suponho que só tem <cat> então tente:

 sed 's/<cat>/dog/g' tt.txt

As citações simples impedem a interpretação de quaisquer caracteres entre elas.

    
por 15.03.2015 / 20:52
0

Você deve adicionar -i após sed para editar o arquivo como:

sed -i 's / cat / dog / g' tt.txt

Deve funcionar perfeitamente.

    
por 15.03.2015 / 22:31
0

O arquivo em si não será alterado com

sed 's/\<cat\>/dog/g' tt.txt

A única coisa que acontece é que sed lerá o arquivo e aplicará a expressão a cada linha de entrada. Em seguida, ele gravará os dados transformados na saída padrão.

Para salvar a saída em um novo arquivo, use

sed 's/\<cat\>/dog/g' tt.txt >tt.txt-new

Você pode substituir o arquivo original pelos novos dados:

sed 's/\<cat\>/dog/g' tt.txt >tt.txt-new && mv tt.txt-new tt.txt

No macOS, você também deve ser capaz de realizar a transformação no local com

sed -i '' 's/\<cat\>/dog/g' tt.txt

embora o manual diga:

It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is exhausted, etc.

    
por 23.09.2017 / 12:53