GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Den Inhalt einer Variablen wortweise umkehren

Auf GNU-Systemen ist die Umkehrung von cat tac:

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

Für eine kurze Liste und in einer Variablen ist die Shell selbst die schnellste Lösung:

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

Ausgabe:

100 90 80 70 60 50 40 30 20 10 

Hinweis:die Split-Operation in set -- $var ist sicher für genau die hier verwendete Zeichenfolge, aber nicht, wenn die Zeichenfolge Platzhalterzeichen enthält (* , ? oder [] ). Dies kann mit set -f vermieden werden vor der Teilung, falls erforderlich. Derselbe Hinweis gilt auch für die folgenden Lösungen (sofern nicht anders angegeben).

Oder, wenn Sie eine andere Variable mit der umgekehrten Liste setzen möchten:

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

Oder nur die Positionsparameter verwenden.

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"

Oder verwenden Sie nur eine Variable (die var selbst sein kann):
Hinweis:Diese Lösung ist nicht von Globing oder IFS betroffen.

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

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

awk zur Rettung

$ 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


mit perl , Höflichkeit Wie liest man eine IP-Adresse rückwärts? geteilt von @steeldriver

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


Oder mit bash sich selbst, indem sie den String in ein Array umwandelt

$ 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-Scripting(I)

  2. Bash Dynamische (Variable) Variablennamen?

  3. N häufigste Wörter in einer Datei finden?

  4. Externe Variable in Awk?

  5. Separate Elemente von Camelcase-Wörtern?

Bash-Exportvariable

So installieren Sie Maven unter Windows

So setzen Sie die Umgebungsvariable in Bash

Was ist Subshell in Linux?

Alias ​​mit Variable in Bash

bash - Vergleich der Variablen ohne Berücksichtigung der Groß-/Kleinschreibung