Cómo usar el comando rev en Linux

Advertisements

Fatmawati Achmad Zaenuri / Shutterstock

Linux rev El comando invierte las cadenas de texto. Este comando puede funcionar en el texto proporcionado o en un archivo, y parece engañosamente simple. Pero al igual que muchas utilidades de línea de comandos, su verdadero poder se hace evidente cuando lo combina con otros comandos.

los rev command es una de esas sencillas utilidades de Linux que a primera vista parecen algo extraño. Cumple una sola función: invierte las cadenas. Y además 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 línea de comando.

Entonces, rev invertir 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.

Advertisements

Cuando usas rev como bloque de construcción en secuencias de comandos más complicadas, realmente está comenzando a mostrar su valor. rev es parte 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 ningún otro parámetro, rev toma cualquier entrada que escriba, la invierte y luego la imprime en la ventana de la terminal. Esto continúa hasta que presione Ctrl + C para salir.

rev

Advertisements

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

Pasar texto a rev

Puedes usar echo para dirigir el texto a rev.

echo one two three | rev

También puedes usar 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 archivos. El archivo se llama «filelist.txt».

rev filelist.txt

Cada línea se lee del archivo, se invierte y luego se imprime en la ventana del terminal.

Combinar rev con otros comandos

A continuación, se muestra un ejemplo que utiliza una tubería de entrada que llama rev dos veces.

Este comando elimina el último carácter de la cadena de texto. Esto puede resultar útil para eliminar la puntuación. Tenemos que usar el cut Ordenar a despojar al personaje.

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

Analicemos esto.

  • echo enviar la cadena en la primera llamada a rev.
  • rev Invierta la cuerda y guíelo hacia adentro cut.
  • los -c La opción (caracteres) 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 ha proporcionado un segundo número, como 2-5, el rango se extendería de los caracteres dos a cinco. Ningún segundo dígito 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.

Dado que eliminamos el primer carácter de la cadena inversa, eliminamos el último carácter de la cadena original. Si, puedes hacerlo con sed Dónde awk, pero es una sintaxis más simple.

Separar la última palabra

Podemos usar un truco similar para devolver la última palabra de la línea.

El comando es similar al anterior: nuevamente, usa rev dos veces. Las diferencias están en el camino cut El comando se usa para seleccionar partes del texto.

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

Aquí está el desglose del pedido:

  • echo enviar la cadena en la primera llamada a rev.
  • rev Invierta la cuerda y guíelo hacia adentro cut.
  • los -d' ' (delimitador) la opción indica 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 que no contiene el delimitador. Es decir, 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 de la cadena inversa, cortamos la última palabra de la cadena original. La última palabra de la oración fue «palabra» y está impresa para nosotros.

Dividir el contenido del archivo

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

Veamos el archivo:

less filelist.txt

El contenido del archivo se nos muestra en less.

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

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

Los nombres de los archivos se enumeran para nosotros sin las comillas.

El comando se desglosa de la siguiente manera:

  • rev invierte las líneas del archivo y las redirige a cut.
  • los -c La opción (caracteres) 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 cadenas, por lo que vuelven a su orden original. Se canalizan hacia cut una segunda vez.
  • los -c La opción (caracteres) 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 cita 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 de Linux separados.

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

El proceso es simple:

  • ls enumera los archivos en el directorio actual. Estos se canalizan hacia rev.
  • rev invierte los nombres de archivo y los redirige a cut.
  • cut devuelve la primera parte de cada nombre de archivo hasta un delimitador. los -d'.' relata cut para utilizar el punto «.» como delimitador. La parte de los nombres de archivo invertida hasta el primer punto son las extensiones de archivo. Estos se canalizan hacia rev.
  • rev invierte las extensiones de archivo en su orden original. Se canalizan hacia sort.
  • sort ordena las extensiones de archivo y dirige los resultados en uniq.
  • uniq devuelve una lista única para cada tipo de extensión de archivo único. 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 dar el toque final, agregue el -c (recuento) opción de línea de comando en uniq pedido.

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.

¡Es una frase genial!

DrawroF og ot drawkcaB gnioG

A veces tienes que dar un paso atrás para seguir adelante. Y normalmente te mueves más rápido como equipo.

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

Advertisements

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *