Olá, Andre!
O erro que você está enfrentando ocorre porque a sintaxe do for
está incorreta. No Bash, o for
deve ser usado com a sintaxe correta para iterar sobre uma sequência de números. Além disso, a substituição no sed
não está correta para o que você deseja fazer. Vamos corrigir isso.
Aqui está uma versão corrigida do seu script:
#!/bin/bash
# Inicializa o contador
contador=1
# Lê o arquivo linha por linha
while IFS= read -r line; do
# Se a linha for um número, substitui pelo contador
if [[ $line =~ ^[0-9]+$ ]]; then
echo $contador
contador=$((contador + 1))
else
echo "$line"
fi
done < '/home/andrew/Series/Mr Robot/Mr..Robot.S03E01.AMZN.WEB-DL.Portuguese.Brazil.POR.srt' > '/home/andrew/Series/Mr Robot/Mr..Robot.S03E01.AMZN.WEB-DL.Portuguese.Brazil.POR_modified.srt'
Explicações:
- Loop
while
: Lê cada linha do arquivo. - Regex para números: Verifica se a linha atual é um número.
- Substituição: Se for um número, substitui pelo valor do
contador
e incrementa. - Redirecionamento: Salva a saída em um novo arquivo para não sobrescrever o original.
Espero ter ajudado e bons estudos!