Cómo usar el comando rev en Linux

Contenidos

Terminal Linux en una computadora portátil Ubuntu.

De Linux rev comando invierte cadenas de texto. Este comando puede operar en el texto proporcionado o en un archivo, y parece engañosamente simple. Pero del mismo modo que muchas utilidades de línea de comandos, su poder real se hace evidente cuando lo combina con otros comandos.

los rev command es una de esas sencillas utilidades de Linux que, a primera vista, parece una rareza. Realiza una única función: invierte cadenas. Y al mismo tiempo de poder imprimir una página de ayuda rápida (-h) y mostrarle su número de versión (-V), no acepta ninguna opciones de la línea de comandos.

Entonces, rev invierte las cuerdas, y eso es todo? ¿Sin variaciones ni opciones? Bueno, sí y no. Sí, no tiene permutaciones, pero no, eso no es todo. Este tutorial le muestra cómo combinarlo para operaciones poderosas.

Cuando usas rev como un bloque de construcción en secuencias de comandos más complicadas, verdaderamente comienza a mostrar su valor. rev es uno de un grupo de comandos (como tac y yes) que son facilitadores. Es más fácil apreciar su utilidad cuando observa cómo hacen que el uso de otros comandos sea más eficiente.

Usando el comando rev

Usado en la línea de comando sin otros parámetros, rev toma cualquier entrada escrita, la invierte y después la imprime en la ventana de terminal. Sigue haciendo esto hasta que presionas Ctrl + C para salir.

rev

Si escribe algo de texto y presiona Enter, hace rev imprima la cadena al revés, a menos que le proporcione un palíndromo, desde luego.

Pasando texto a rev

Puedes utilizar echo para canalizar texto a rev.

echo one two three | rev

Además puedes utilizar rev para invertir el contenido de un archivo de texto completo, línea por línea. En este ejemplo, tenemos un archivo que contiene una lista de nombres de archivo. El archivo se llama «filelist.txt».

rev filelist.txt

Cada línea se lee del archivo, se invierte y después se imprime en la ventana de la terminal.

Combinando rev con otros comandos

A continuación, se muestra un ejemplo en el que se utiliza una canalización de entrada que llama rev dos veces.

Este comando quita el último carácter de la cadena de texto. Esto podría resultar útil para borrar la puntuación. Necesitamos utilizar el cut comando para despojar al personaje.

echo 'Remove punctuation.' | rev | cut -c 2- | rev

Analicemos eso.

  • echo envía la cadena a la primera llamada a rev.
  • rev invierte la cuerda y la canaliza hacia cut.
  • los -c (caracteres) opción dice cut para devolver una secuencia de caracteres de la cadena.
  • los 2- la opción dice cut para devolver el rango de caracteres desde el carácter dos hasta el final de la línea. Si se proporcionó un segundo número, como 2-5, el rango sería de dos a cinco caracteres. Ningún segundo número significa «hasta el final de la cadena».
  • La cadena invertida, menos su primer carácter, se pasa a rev que invierte la cadena, por lo que vuelve a su orden original.

Debido a que recortamos el primer carácter del invertido cadena, recortamos el último carácter de la original cuerda. Sí, podrías hacer esto con sed o awk, pero esta es una sintaxis más sencilla.

Separando la última palabra

Podemos utilizar un truco equivalente para devolver la última palabra de la línea.

El comando es equivalente al anterior: nuevamente, utiliza rev dos veces. Las diferencias radican en la forma en que cut El comando se utiliza para elegir partes del texto.

echo 'Separate the last word' | rev | cut -d' ' -f1 | rev

Aquí está el desglose del comando:

  • echo envía la cadena a la primera llamada a rev.
  • rev invierte la cuerda y la canaliza hacia cut.
  • los -d' ' (delimitador) la opción dice cut para devolver una secuencia de caracteres delimitada por un espacio.
  • los -f1 la opción dice cut para devolver la primera sección de la cadena no contiene el delimitador. Dicho de otra forma, desde la primera parte de la oración hasta el primer espacio.
  • La primera palabra invertida se pasa a rev que invierte la cadena, por lo que vuelve a su orden original.

Debido a que extrajimos la primera palabra del invertido cadena, recortamos la última palabra del original cuerda. La última palabra de la oración fue «palabra» y está impresa para nosotros.

Recorte de contenido de archivos

Digamos que tenemos un archivo que contiene una lista de nombres de archivo y los nombres de archivo están entre comillas. Queremos borrar las comillas de los nombres de archivo.

Veamos el archivo:

less filelist.txt

El contenido del archivo se muestra para nosotros en less.

Podemos borrar la puntuación de ambos extremos de cada línea con el siguiente comando. Este comando utiliza tanto rev y cut dos veces.

rev filelist.txt | cut -c 2- | rev | cut -c 2-

Los nombres de archivo se enumeran para nosotros sin las comillas.

El comando se descompone así:

  • rev invierte las líneas en el archivo y las canaliza en cut.
  • los -c (caracteres) opción dice cut para devolver una secuencia de caracteres de cada línea.
  • los 2- la opción dice cut para devolver el rango de caracteres desde el carácter dos hasta el final de cada línea.
  • Las cadenas invertidas, menos sus primeros caracteres, se pasan a rev.
  • rev invierte las cuerdas, por lo que vuelven a su orden original. Están canalizados en cut por segunda vez.
  • los -c (caracteres) opción dice cut para devolver una secuencia de caracteres de cada cadena.
  • los 2- la opción dice cut para devolver el rango de caracteres desde el carácter dos hasta el final de cada línea. Esto «salta» la comilla inicial, que es el carácter uno en cada línea.

Mucha tubería

Aquí hay un comando que devuelve una lista ordenada de cada extensión de archivo en el directorio actual. Utiliza cinco comandos distintos de Linux.

ls | rev | cut -d'.' -f1 | rev | sort | uniq

El procedimiento es sencillo:

  • ls enumera los archivos en el directorio actual. Estos se canalizan en rev.
  • rev invierte los nombres de archivo y los canaliza a cut.
  • cut devuelve la primera parte de cada nombre de archivo hasta un delimitador. los -d'.' dice cut para usar el punto «.» como delimitador. La parte de los nombres de archivo invertidos hasta el primer período son las extensiones de archivo. Estos se canalizan a rev.
  • rev invierte las extensiones de archivo en su orden original. Se canalizan en sort.
  • sort ordena las extensiones de archivo y canaliza los resultados a uniq.
  • uniq devuelve una lista única para cada tipo de extensión de archivo única. Tenga en cuenta que si no hay una extensión de archivo (como para el archivo MAKE y los directorios Help y gc_help), se muestra el nombre completo del archivo.

Para darle un toque final, agregue el -c (recuento) opción de línea de comandos a la uniq mando.

ls | rev | cut -d'.' -f1 | rev | sort | uniq -c

Ahora obtenemos una lista ordenada de los diferentes tipos de archivos en el directorio actual con un recuento de cada uno.

¡Esa es una frase ingeniosa!

DrawroF og ot drawkcaB gnioG

A veces debes de retroceder para avanzar. Y regularmente avanzas más rápido como parte de un equipo.

Agregar rev a su repertorio de comandos de acceso, y pronto lo usará para simplificar secuencias de comandos que de otro modo serían complicadas.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.