Próbuję wykonać zadanie domowe, które jest ograniczone do używania tylko pliku sed
w celu odfiltrowania pliku wejściowego do określonego formatu danych wyjściowych. Tutaj jest plik wejściowy (nazwany stocks
):Jak napisać skrypt sed do grep informacji z pliku tekstowego
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
================================================
a wyjście musi być:
BAC, CSCO, INTC, MSFT, VZ, KO, MMM
zrobiłem wymyślić rozwiązanie, ale to nie jest wydajne. Oto moja sed
skrypt (o nazwie 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
}
Komenda że biegnę na powłoce wynosi:
$ sed -nf try.sed stocks
Moje pytanie brzmi, czy istnieje lepszy sposób korzystania sed aby uzyskać ten sam rezultat ? Skrypt, który napisałem, działa tylko z 7 liniami danych. Jeśli dane są dłuższe, muszę ponownie zmodyfikować mój skrypt. Nie jestem pewien, jak mogę to poprawić, więc proszę o pomoc!
Dzięki za wszelkie zalecenia.
+1 do wpuszczania to zadanie domowe i do tego dziko 's/\ (. * \); ....../'rzecz, którą tam umieściłeś! Powodzenia. – shellter