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


Tal vez pueda interesarte


Compartí este artículo