如何在ksh中反转字符串

时间:2016-04-20 13:17:09

标签: unix awk sed solaris ksh

请帮助我解决这个问题,我有一个阵列女巫包括1000行数字,被视为字符串,我希望他们所有人一个接一个地反转他们,我的问题是如何扭转他们因为我必须使用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

3 个答案:

答案 0 :(得分:1)

如果您可以将数组的内容打印到文件中,则可以使用此awk oneliner处理该文件。

$mollie = new Mollie_API_Client;

检查这个!!

awk '{s1=split($0,A,""); line=""; for (i=s1;i>0;i--) line=line A[i];print line}' file

我在Ubuntu上使用ksh对此进行了测试,结果相同:

other_var=`echo ${xnumbers[$i]} | awk '{s1=split($0,A,""); line=""; for (i=s1;i>0;i--) line=line A[i];print line}'`

答案 1 :(得分:1)

我不知道为什么我们不能使用内置的rev函数。

$ echo 798|rev
897

您也可以尝试:

$ echo 798 | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{print x}'
897

答案 2 :(得分:1)

您可以同时使用cutpasterev,只需将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)

或者仅rev如果,它不是OP所阐明的编号文件。