Como a plist parece ser uma arquivo de texto normal, no Linux é o suficiente para escrever (é uma única linha)
sed 's/<string>com.apple.mail<\/string>/<string>com.microsoft.outlook<\/string>/g' AAA.txt
onde, em vez de AAA.txt
, você deve escrever seu filename
.
Ele mostrará o resultado na saída padrão (o tty
no qual você está trabalhando).
Depois disso você verificou se funcionou bem, você pode escrever a mesma linha adicionando o parâmetro -i
para modificar o arquivo dentro
sed -i 's/<string>com.apple.mail<\/string>/<string>com.microsoft.outlook<\/string>/g' AAA.txt
Algumas explicações mais :
sed -i 's/OLD/NEW/g' NameOfYourFile
-
O comando acima irá procurar dentro do arquivo
NameOfYourFile
todas as ocorrências da stringOLD
e irá substituí-lo com a stringNEW
. -
Você deve identificar adequadamente a palavra-chave que deseja substituir, neste caso com as tags incluídas:
<string>com.apple.mail</string>
.
Como há um/
, você precisa protegê-lo com\
antes e a palavra-chave torna-se<string>com.apple.mail<\/string>
. (Você tem que aplicar a mesma lógica para a segunda string). - O parâmetro
-i
substituirá a string no arquivo sem exibir o resultado na tela. Para isso pode ser melhor tentar antes sem. - Abaixo de
BSD
, pode ser importante a ordem dos parâmetros , portanto,sed ... -i
não pode ser o mesmo desed -i ...
e fornece o erro que você encontrou. - Pode ser necessário adicionar
sudo
no começo para obter o privilégio de root , ou executar esse comando a partir de um shell de root , se você não tiver permissão usuário normal para modificar esse arquivo. (Você pode verificar comls -l NameOfYourFile
).
Notas
de man sed
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)