Estoy tratando de hacer mi tarea que está restringida a solo usar sed
para filtrar un archivo de entrada a un formato de salida determinado. Aquí está el archivo de entrada (llamado stocks
):Cómo escribo un script sed para grep información de un archivo de texto
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
================================================
Y la salida tiene que ser:
BAC, CSCO, INTC, MSFT, VZ, KO, MMM
Yo he venido para arriba con una solución, pero no es eficiente. Aquí está mi sed
guión (llamado 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
}
El comando que corro en el caparazón es:
$ sed -nf try.sed stocks
Mi pregunta es, ¿Hay una mejor manera de usar sed para obtener el mismo resultado ? El script que escribí solo funciona con 7 líneas de datos. Si los datos son más largos, necesito volver a modificar mi secuencia de comandos. No estoy seguro de cómo puedo hacerlo mejor, ¡así que estoy aquí pidiendo ayuda!
Gracias por cualquier recomendación.
+1 para la admisión de esto es la tarea y por esa salvaje 's/\ (. * \); ....../'cosa que pones ahí! Buena suerte. – shellter