2015-05-13 10 views
5

Bash può generare più stringhe da single, se si utilizza la sintassi {..., ...}. Come qui:Come generare una stringa per l'espansione delle parole bash?

$ echo pgdb{200,10{0,1}} 
pgdb200 pgdb100 pgdb101 

Esiste un modo per prendere una lista di stringhe e produrre (si spera più breve) stringa che, dopo l'elaborazione attraverso l'espansione di parola bash produrrà lista originale (non necessariamente nell'ordine originale

? Ad esempio, mi piacerebbe questo strumento/algoritmo, che data:

  • PostgreSQL
  • mysql
  • Postgres
  • Miata

produrrebbero (per esempio): {postgres{ql,},m{iata,ysql}}

Avevo pensato di usare trie per rappresentare stringhe di input, ma non riesco a capire come elaborare questo trie per costruire stringa di output.

+1

L'espansione del brace è destinata all'uso interattivo per ridurre la quantità di digitazione che è necessario eseguire. Se hai già la lista dei nomi in un modulo che potresti alimentare con uno strumento del genere, usa questa lista. Ridurlo a un'espansione minima di parentesi graffa solo la leggibilità. – chepner

+0

Ciò richiederebbe l'analisi e il confronto di ogni carattere di ogni parola e sarebbe molto più semplice del semplice utilizzo della lista predeterminata. –

+0

@chepner my usecase serve per generare la lista in un posto e usarla in un'altra. In modo interattivo. Non riesco a scp la lista facilmente come entrambi i posti sono dietro firewall e nats diversi. – someone

risposta

1
+0

È un approccio interessante, ma sfortunatamente l'algoritmo non è molto intelligente. Non è in grado di gestire in modo ragionevole casi in cui un determinato insieme di stringhe ha sia un prefisso comune che un suffisso comune. – someone

Problemi correlati