请帮我解决这个问题,我有一个数组女巫,包括1000个数字,被视为string,我希望他们所有人一个一个地扭转,我的问题是如何扭转他们,因为我必须使用ksh或其他与bash或东西,这将是如此简单…..我现在有这个,但是rev="$rev${copy:$y:1}"
在ksh中不起作用。
i=0 while [[ $i -lt 999 ]] do rev="" var=${xnumbers[$i]} copy=${var} len=${#copy} y=$(expr $len - 1) while [[ $y -ge 0 ]] do rev="$rev${copy:$y:1}" echo "y = " $y y=$(expr $y - 1) done echo "i = " $i echo "rev = " $rev #xnumbers[$i]=$(expr $xnumbers[$i] "|" $rev) echo "xum = " ${xnumbers[$i]} echo "##############################################" i=$(expr $i + 1) done
我不知道为什么我们不能使用内置的rev函数。
$ echo 798|rev 897
你也可以尝试:
$ echo 798 | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{print x}' 897
如果可以将数组的内容打印到文件中,则可以使用这个awk oneliner处理文件。
awk '{s1=split($0,A,""); line=""; for (i=s1;i>0;i--) line=line A[i];print line}' file
检查这个!
other_var=`echo ${xnumbers[$i]} | awk '{s1=split($0,A,""); line=""; for (i=s1;i>0;i--) line=line A[i];print line}'`
我用ksh在Ubuntu上测试过,结果相同:
number="789" other_var=`echo $number | awk '{s1=split($0,A,""); line=""; for (i=s1;i>0;i--) line=line A[i];print line}'` echo $other_var 987
您可以使用cut
, paste
和rev
,只需将printf
更改为cat
file.txt即可:
paste -d' ' <(printf "%s data\n" {1..100} | cut -d' ' -f1) <(printf "%s data\n" {1..100} | cut -d' ' -f2 |rev)
或者,如果它不是由OP所阐明的编号文件,