zsh
:
print -r -- ${(Oa)=VAR}
$=VAR
पर विभाजित $VAR
है $IFS
। (Oa)
परिणामी सूची को रिवर्स एरे ऑर्डर में क्रमबद्ध करता है। print -r --
(जैसे ksh
), उसी तरह echo -E -
( zsh
विशिष्ट) का एक विश्वसनीय संस्करण हैecho
: इसके तर्कों को प्रिंट करता है जैसा कि अंतरिक्ष द्वारा अलग किया जाता है, जिसे न्यूलाइन द्वारा समाप्त किया जाता है।
यदि आप केवल अंतरिक्ष में विभाजन करना चाहते हैं, और जो कुछ भी $IFS
शामिल नहीं है (स्थान, टैब, न्यूलाइन, डिफ़ॉल्ट रूप से शून्य), या तो अंतरिक्ष असाइन करें $IFS
, या एक स्पष्ट विभाजन का उपयोग करें:
print -r -- ${(Oas: :)VAR}
रिवर्स संख्यात्मक क्रम में सॉर्ट करने के लिए:
$ VAR='50 10 20 90 100 30 60 40 70 80'
$ print -r -- ${(nOn)=VAR}
100 90 80 70 60 50 40 30 20 10
POSIXly (तो यह भी काम करेगा bash
):
शेल बिलिन ( printf
कुछ गोले को छोड़कर ) तंत्र के साथ (केवल थोड़े मूल्य वाले चरों के लिए बेहतर)
unset -v IFS # restore IFS to its default value of spc, tab, nl
set -o noglob # disable glob
set -- $VAR # use the split+glob operator to assign the words to $1, $2...
reversed_VAR= sep=
for i do
reversed_VAR=$i$sep$reversed_VAR
sep=' '
done
printf '%s\n' "$reversed_VAR"
साथ awk
(बड़े चर, विशेष रूप से साथ के लिए बेहतर bash
है, लेकिन (या एक ही तर्क का) बहस के आकार की सीमा तक):
awk '
BEGIN {
n = split(ARGV[1], a);
while (n) {printf "%s", sep a[n--]; sep = " "}
print ""
}' "$VAR"