Solução Python 2.7 e 3
Esta solução substitui a primeira ocorrência de uma única sequência arbitrária especificada (a “agulha”) em todas as linhas do arquivo de entrada por uma sequência sempre escolhida aleatoriamente no conjunto de linhas da lista de sequências de substituições.
#!/usr/bin/python
from __future__ import print_function
import sys, random
needle = sys.argv[1]
if sys.argv[2] == '-':
f_replacements = sys.stdin
else:
f_replacements = open(sys.argv[2])
with f_replacements:
replacements = [l.rstrip('\n') for l in f_replacements]
if not replacements:
raise ValueError('No replacement strings given')
if len(sys.argv) <= 3 or sys.argv[3] == '-':
f_in = sys.stdin
else:
f_in = open(sys.argv[3])
with f_in:
for s in f_in:
rep = replacements[random.randrange(len(replacements))]
print(s.rstrip('\n').replace(needle, rep, 1))
Deve ser quase trivial ancorar a agulha no início ou no final da corda ou usar expressões regulares por completo.
Uso
python replace-random.py NEEDLE REPLACEMENTS-FILE [INPUT-FILE]
Exemplo:
python replace-random.py '@address.com' file2.txt file1.txt
ou
python replace-random.py '@address.com' file2.txt < file1.txt