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.