GNU/Linux >> Tutoriales Linux >  >> Linux

Invertir el contenido de una variable por palabras

En los sistemas GNU, el reverso de cat es tac:

$ tac -s" " <<< "$VAR "            # Please note the added final space.
100 90 80 70 60 50 40 30 20 10

Para una lista corta, y en una variable, el propio shell es la solución más rápida:

var="10 20 30 40 50 60 70 80 90 100"
set -- $var; unset a 
for ((i=$#;i>0;i--)); do
    printf '%s%s' "${a:+ }" "${!i}"
    a=1
done
echo

Salida:

100 90 80 70 60 50 40 30 20 10 

Nota:la operación de división en set -- $var es seguro para la cadena exacta utilizada aquí, pero no lo será si la cadena contiene caracteres comodín (* , ? o [] ). Se puede evitar con set -f antes de la división, si es necesario. La misma nota también es válida para las siguientes soluciones (excepto donde se indique).

O, si desea establecer alguna otra variable con la lista inversa:

var="10 20 30 40 50 60 70 80 90 100"
set -- $var
for i; do out="$i${out:+ }$out"; done
echo "$out"

O usando solo los parámetros posicionales.

var="10 20 30 40 50 60 70 80 90 100"
set -- $var
a=''
for    i
do     set -- "$i${a:+ [email protected]}"
       a=1
done
echo "$1"

O usando solo una variable (que puede ser var):
Nota:Esta solución no se ve afectada por globing ni IFS.

var="10 20 30 40 50 60 70 80 90 100"

a=" $var"
while [[ $a ]]; do
    printf '<%s>' "${a##* }"
    var="${a% *}"
done

awk al rescate

$ var='10 20 30 40 50 60 70 80 90 100'

$ echo "$var" | awk '{for(i=NF; i>0; i--) printf i==1 ? $i"\n" : $i" "}'
100 90 80 70 60 50 40 30 20 10


con perl , cortesía ¿Cómo leer una dirección IP al revés? compartido por @steeldriver

$ echo "$var" | perl -lane '$,=" "; print reverse @F'
100 90 80 70 60 50 40 30 20 10


O, con bash sí mismo convirtiendo la cadena en matriz

$ arr=($var)    
$ for ((i=${#arr[@]}-1; i>=0; i--)); do printf "${arr[i]} "; done; echo
100 90 80 70 60 50 40 30 20 10 

Linux
  1. Bash Dynamic (variable) ¿Nombres de variables?

  2. Variable externa en Awk?

  3. $ruta Variable Env Variable?

  4. Sustitución de variables de entorno en sed

  5. Alias ​​con variable en bash

Variable de exportación de bash

Cómo instalar Maven en Windows

Cómo establecer la variable de entorno en Bash

¿Qué es Subshell en Linux?

¿Cómo obtener el contenido de una página web en una variable de shell?

Shell:escribe contenido variable en un archivo