Foro de elhacker.net

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: BeLGaRioN en 29 Septiembre 2012, 21:25 pm



Título: Frikada, a ver si alguien sabe...
Publicado por: BeLGaRioN en 29 Septiembre 2012, 21:25 pm
Aclaro desde el principio que no puedo hacer un programita que me lo haga, debe ser con comandos linux solamente.

El ejercicio pide esto:

Citar
Sin usar un editor, indica los comandos a seguir para que los dos últimos campos (datos)
de cada línea de tu fichero misdatos, se coloquen al comienzo de esa línea. El resultado debe
almacenarse en el fichero llamado misdatos_1. Es decir, si la línea tiene los siguientes datos.
1025.6 0.00751439 12.2981 -3.95028e-07 0.569316 976.555 -3.11383e+09 2.88912e+12 0.238935
11.5923 14.9557 254.925 -2.52062 cn vit
El resultado que se desea será:
cn vit 1025.6 0.00751439 12.2981 -3.95028e-07 0.569316 976.555 -3.11383e+09 2.88912e+12
0.238935 11.5923 14.9557 254.925 -2.52062

Por si no se ha entendido muy bien, básicamente necesito que las 2 últimas palabras, de cada línea de un fichero de datos, pasen al principio de otro fichero de datos, concatenando la información que precedía a estas dos últimas palabras, en cada línea, después de esas 2 palabras. Sospecho que el comando cut me podría servir al menos para recortar esas 2 palabras. Sé como hacerlo al principio, pero no al final.

¿Alguna idea?


Título: Re: Frikada, a ver si alguien sabe...
Publicado por: BeLGaRioN en 29 Septiembre 2012, 21:46 pm
Creo que ya he hecho una parte, al menos la de seleccionar las últimas 2 palabras:

Citar
grep "\<[a-z][a-z]*\> \<[a-z][a-z]*\>$"


Título: Re: Frikada, a ver si alguien sabe...
Publicado por: idst en 30 Septiembre 2012, 09:28 am
Código
  1. sed 's/^\(.*\) \(.*\) \(.*\)$/\2 \3 \1/g' misdatos >misdatos_1
Así?

Edit: en todo caso es un comando de GNU, no de Linux.  :silbar: