En sistemas operativos de la familia Unix, el comando rev
permite invertir cada linea de un archivo. No confundir con el comando tac
, el cual invierte el orden de las líneas, rev
invierte los caracteres de cada línea de forma independiente.
Veamos directamente un ejemplo:
root@debian:/etc# cat /etc/magic # Magic local data for file(1) command. # Insert here your local magic data. Format is described in magic(5).
Como se observa a continuación, rev
invierte cada linea, preservando el orden en el archivo:
root@debian:/etc# rev /etc/magic .dnammoc )1(elif rof atad lacol cigaM # .)5(cigam ni debircsed si tamroF .atad cigam lacol ruoy ereh tresnI #
En cambio tac
preserva el contenido de cada linea pero invierte el orden en que aparecen en el archivo:
root@debian:/etc# tac /etc/magic # Insert here your local magic data. Format is described in magic(5). # Magic local data for file(1) command.
Listar archivos por extensión
rev
puede ser útil, por ejemplo, para listar archivos agrupándolos según su extensión. Por ejemplo, dado el siguiente directorio:
$ ls -l total 132 -rw-r--r-- 1 emi wheel 309 Aug 2 2011 archivos.png -rw-r--r-- 1 emi wheel 204 Mar 9 2009 audio.gif -rw-r--r-- 1 emi wheel 199 Mar 9 2009 files.gif -rw-r--r-- 1 emi wheel 100 Aug 11 2010 folder.gif -rw-r--r-- 1 emi wheel 3132 Mar 12 2012 googledoc.png -rw-r--r-- 1 emi wheel 2916 Aug 2 2011 horario.png -rw-r--r-- 1 emi wheel 3853 Mar 14 2012 hoy.png -rw-r--r-- 1 emi wheel 340 Mar 9 2009 imagen.gif -rw-r--r-- 1 emi wheel 44 Mar 9 2009 index.html -rw-r--r-- 1 emi wheel 31350 Mar 19 2015 keyboard.jpg -rw-r--r-- 1 emi wheel 395 Mar 12 2012 lupa.png -rw-r--r-- 1 emi wheel 323 Aug 6 2011 odp.gif -rw-r--r-- 1 emi wheel 210 Aug 6 2011 odt.gif -rw-r--r-- 1 emi wheel 330 Mar 9 2009 pdf.gif -rw-r--r-- 1 emi wheel 211 Mar 9 2009 ppt.gif -rw-r--r-- 1 emi wheel 305 Mar 9 2009 readon.gif -rw-r--r-- 1 emi wheel 15884 Aug 11 2010 tagsmaterias.jpg -rw-r--r-- 1 emi wheel 234 Mar 9 2009 txt.gif -rw-r--r-- 1 emi wheel 335 Mar 9 2009 video.gif drwxr-xr-x 3 emi wheel 1024 Mar 19 2015 viewer -rw-r--r-- 1 emi wheel 222 Mar 9 2009 word.gif -rw-r--r-- 1 emi wheel 222 Mar 9 2009 xls.gif -rw-r--r-- 1 emi wheel 218 Mar 9 2009 zip.gif
Es posible agrupar los archivos por extensión (filtrando aquellos que no posean) de la siguiente forma:
$ ls -1 *.* | rev | sort | rev word.gif pdf.gif imagen.gif readon.gif video.gif audio.gif odp.gif zip.gif folder.gif files.gif xls.gif odt.gif ppt.gif txt.gif lupa.png googledoc.png horario.png archivos.png hoy.png keyboard.jpg tagsmaterias.jpg index.html
Listar los archivos que poseen extensión (aquellos cuyo nombre incluye al menos un punto), invertir cada nombre con rev
, luego ordenar (para que las extensiones idénticas queden agrupadas), para finalmente volver a invertir.
Lógicamente las extensiones no quedan listadas alfabéticamente, pues son ordenadas cuando la cadena está invertida (sort
ordena según "pgj" en vez de "jpg").
Otro comando útil para tener en cuenta al momento de desarrollar scripts.
tac
en sistemas FreeBSD
La utilidad rev
está presente en todos los sistemas de la familia Unix (GNU/Linux, *BSD, etc.) Sin embargo, la herramienta tac
es parte del paquete coreutils
(GNU), el cual no está presente en sistemas FreeBSD. Sin embargo, la implementación del comando tail
de FreeBSD se comporta exactamente como tac
cuando se lo utiliza con la opción -r
(y en tal caso las opciones -b
, -c
y -n
cambian su significado), ya que por defecto muestra toda la salida invertida.
En GNU/Linux:
tac
En FreeBSD:
tail -r
Referencias
man rev man tac
Fuente: linuxito