Parece que o seu problema é que nenhum dos seus comandos está modificando o arquivo; todos eles gravam na saída padrão (ou seja, exibem os resultados na janela do terminal). Em geral, duas abordagens vêm à mente:
-
copie o arquivo e use os sinalizadores de opção que fazem com que seus comandos modifiquem o arquivo copiado no local ou
-
use canais e redirecionamento de saída para aplicar todas as operações e gravar o resultado em um novo arquivo.
Um problema com a primeira abordagem é que nem todo programa de linha de comando suporta modificação de arquivos no local. Nesse caso, só acontece que sed
tem uma opção para editar o arquivo no local; O uso do sinalizador -i
option informa sed
para editar o arquivo no local. O programa tr
não suporta edição no local, no entanto, você pode facilmente substituir o comando tr
por um comando sed
. Isso pode nos levar a algo como a versão a seguir (levemente modificada) do seu script:
#0. Create a copy of the file
cp -i 1.txt 2.txt
#1. Converts all text inside file 2.txt to lowercase
sed -i -e 's/\(.*\)/\L/' 2.txt
#2. Removes html/xml tags from the text
sed -i -e 's/<['^]>'*>//g' 2.txt
#3 Replaces all acronyms with full names
sed -i -e 's/doc/document/' 2.txt
#4 Converts all numbers to full words
sed -i -e 's/2/two/' 2.txt
Se quiséssemos usar pipes e redirecionamento, poderíamos acabar com algo como a seguinte alternativa:
cat 1.txt \
| sed -e 's/\(.*\)/\L/' \
| sed -e 's/<['^]>'*>//g' \
| sed -e 's/doc/document/' \
sed -e 's/2/two/' \
> 2.txt
Observe que isso não é uma solução para sua tarefa; ele só resolve sua questão sobre como gravar alterações em um arquivo.