Obtendo acesso ao incremento da extensão do arquivo (como uma variável inteira) [duplicado]

0

Estou tentando codificar um script simples que usa sed para localizar e substituir a funcionalidade básica. Eu quero ter arquivo original intocado e ter resultados em novos arquivos chamados "file.n" (n está sendo incrementado).

Meu principal problema é com a numeração de novos arquivos. Este é um código básico meu que tem funcionalidade estática para n = 1 en = 2:

#!/bin/bash
n=1

if [[ -f file.$n ]]
then sed -e 's/'$2'/'$3'/g' $1 > file.$((n+1))

else sed -e 's/'$2'/'$3'/g' $1 > file.1
fi

A entrada no terminal é semelhante a: ./ script text_sample.txt word_1 word_2

Este código funciona bem para o primeiro e o segundo uso (se o arquivo 1 não existiu, ele salvará os resultados aqui; senão ele será salvo no arquivo. (n + 1) que é o arquivo.2).

Mas como eu faço isso para file.3, file.4 etc? Depois de lançar este script todas as vezes, no começo é n = 1 e eu realmente não tenho mais idéias sobre como posso lidar com isso.

Eu já tentei algumas variáveis de exportação, usando uma variável específica como um comando (para tornar esse inteiro mais parecido com global); Eu acho que alguns loops podem ser necessários ...

Qualquer ajuda seria apreciada.

    
por adek111 26.11.2016 / 18:34

2 respostas

0

Tente isto:

#!/bin/bash
n=1

while [[ -f file.$n ]]; do
    n=$((n+1)
done

sed -e 's/'$2'/'$3'/g' $1 > "file.${n}"
    
por 26.11.2016 / 20:32
0

sed tem um recurso de backup tente sed -i [SUFFIX]

    
por 26.11.2016 / 18:39