Sto provando a fare i compiti che è limitato a utilizzare solo sed
per filtrare un file di input in un determinato formato di output. Ecco il file di input (chiamato stocks
):Come scrivere uno script sed per grep informazioni da un file di testo
Symbol;Name;Volume
================================================
BAC;Bank of America Corporation Com;238,059,612
CSCO;Cisco Systems, Inc.;28,159,455
INTC;Intel Corporation;22,501,784
MSFT;Microsoft Corporation;23,363,118
VZ;Verizon Communications Inc. Com;5,744,385
KO;Coca-Cola Company (The) Common;3,752,569
MMM;3M Company Common Stock;1,660,453
================================================
E l'uscita deve essere:
BAC, CSCO, INTC, MSFT, VZ, KO, MMM
sono venuto su con una soluzione, ma non è efficiente. Qui è il mio sed
copione (chiamato try.sed
):
/.*;.*;[0-9].*/ { N
N
N
N
N
N
s/\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*/\1, \2, \3, \4, \5, \6, \7/gp
}
Il comando che ho eseguito sulla shell è:
$ sed -nf try.sed stocks
La mia domanda è: esiste un modo migliore di usare sed per ottenere lo stesso risultato ? Lo script che ho scritto funziona solo con 7 righe di dati. Se i dati sono più lunghi, ho bisogno di ri-modificare il mio script. Non sono sicuro di come riuscirò a migliorare, quindi sono qui per chiedere aiuto!
Grazie per eventuali consigli.
+1 per l'ammissione di questo compito e per questo selvaggio 's/\ (. * \); ....../'cosa ci hai messo dentro! In bocca al lupo. – shellter