Comece pelo mais à direita:
sed -i 's/./&,/22;s/./&,/8;s/./&,/4' ./*.txt
Caso contrário, a primeira substituição afetaria o deslocamento do segundo. Você sempre pode contabilizá-lo:
sed -i 's/./&,/4;s/./&,/9;s/./&,/24' ./*.txt
Tenho centenas de arquivos *.txt
que possuem um formato comum.
Eu posso inserir uma vírgula em uma posição específica em um arquivo, como generalizar o código abaixo para aplicar essa operação em vários locais para todos os arquivos *.txt
no diretório?
sed -i 's/^\(.\{4\}\)/,/' blank.txt
Por exemplo, inserindo vírgulas nas posições 4, 8, 22, etc.
Algo assim talvez?
for i in *.txt; do
sed -i 's/^\(.\{4\}\)/,/' $i
done
De uma maneira geral , você pode fazer:
sed 's/./&,/4' <in >out
Isso adicionará uma vírgula na saída ao quarto caractere de todas as linhas de entrada com pelo menos esses caracteres.
E, se você seguir meu conselho, geralmente não use a opção -i
para qualquer sed
que ofereça uma.
Tags sed text-formatting