Sto cercando un modo per sostituire le stringhe segnaposto in un file modello con valori concreti, con strumenti Unix comuni (bash, sed, awk, forse perl). È importante che la sostituzione avvenga in un unico passaggio, ovvero ciò che è già stato scansionato / sostituito non deve essere preso in considerazione per un'altra sostituzione. Ad esempio, questi due tentativi falliscono:
echo "AB" | awk '{gsub("A","B");gsub("B","A");print}'
>> AA
echo "AB" | sed 's/A/B/g;s/B/A/g'
>> AA
Il risultato corretto in questo caso è ovviamente BA.
In generale, la soluzione dovrebbe essere equivalente alla scansione dell'input da sinistra a destra per una corrispondenza più lunga con una delle stringhe di sostituzione fornite e per ciascuna corrispondenza, eseguire una sostituzione e continuare da quel punto in avanti nell'input (nessuna delle già letto input né i sostituti eseguiti devono essere considerati per le partite). In realtà, i dettagli non contano, solo che i risultati della sostituzione non vengono mai considerati per un'altra sostituzione, in tutto o in parte.
NOTA Sto solo cercando soluzioni generiche corrette. Non proporre soluzioni che falliscono per determinati input (file di input, ricerca e sostituzione di coppie), per quanto improbabili possano sembrare.
tr AB BA
.