escrever em todas as linhas mais uma

1

Você pode me ajudar com um script unix para obter resultados como este no arquivo:


apple1
apple2
apple3

etc. até 100

de um arquivo apple.txt que contém apenas uma palavra - apple.

Obrigado antecipadamente!

    
por ampersand8 28.03.2012 / 07:36

5 respostas

2

Enquanto estamos todos acumulando idéias, aqui está o meu, com meu comando under-used favorito de longa data, seq :

echo "" ; apple='cat /tmp/apple.txt' ; seq 1 100 | sed -e "s/^/$apple/"

O echo no início fornece sua linha em branco inicial, que temo que alguns pôsteres possam estar esquecendo (embora suas soluções sejam perfeitamente boas, e todas poderiam ser facilmente corrigidas, sugestão).

    
por 28.03.2012 / 08:12
3

O Google tem amplos recursos para o Bash Scripting.

De qualquer forma aqui vai:

for i in {1..100}; do echo "'cat apple.txt'$i"; done
    
por 28.03.2012 / 07:58
2

Aqui está uma solução em AWK :

awk '{ while (count++ < 100) print $0 count }' apple.txt > output.txt

Solução seq-golf de bônus (29 caracteres):

seq -f"$(pg apple.txt)%g" 100

seq começa em 1 por padrão, portanto, não é necessário especificar o parâmetro FIRST . A saída de exemplo não preenche os números, portanto, o formato pode ser reduzido. A partir da aparência da marcação, a linha em branco no exemplo de saída é provavelmente um erro de formatação.

Editar (25 caracteres): seq -f$(<apple.txt)%g 100

    
por 28.03.2012 / 08:02
1
seq --format "$(cat apple.txt)%02g" 1 100
    
por 28.03.2012 / 09:18
0

Se bash estiver disponível, o seguinte não usará comandos externos:

( read -r t; for i in {1..100}; do echo "$t$i" >> outfile; done ) < apple.txt
    
por 28.03.2012 / 10:43