📜  反转字符串 |外壳编程

📅  最后修改于: 2022-05-13 01:57:27.522000             🧑  作者: Mango

反转字符串 |外壳编程

我们得到一个字符串,我们必须使用 shell 脚本以相反的顺序打印它。
在 FICO 中询问

例子:

Input : geeksforgeeks 
Output :skeegrofskeeg

算法

step 1:- Take user input in a string
step 2:- Findthe length of given string using length function
step 3:- Set i = length-1 and run loop till i <= 0
step 4:- echo the $i
step 5:- repeat step 3 and 4 till i==0
step 6:- end

// reverse a string using shell script
// reverse a string is in linux and unix
  
#!/ bin / bash
// reading a string
// using via user input
read - p "Enter string:" string
    // getting the length of given string
    len
    = $
{
    #string
}
// looping for reversing a string
// initialize i=len-1 for reversing a string and run till i=0
// printing in the reverse order of the given string
for ((i = $len - 1; i >= 0; i--))
    do
    // "${string:$i:1}"extract single single character from string.
    reverse = "$reverse${string:$i:1}" done
        echo "$reverse"

输出:



skeegrofskeeg

使用命令反转 shell 脚本中的字符串

  1. rev 命令:用于反转文件中的行。此命令可以采用标准输入以及如下所示。
    $ echo welcome | rev
    
    emoclew
    

    注意: rev 命令并非在所有版本的 Unix 中都存在。

  2. awk 命令:使用 substring函数,可以反转字符串:
    $ echo welcome | awk 
    '{ for(i = length; i!=0; i--)
    x = x substr($0, i, 1);
    }END
    {print x}'
    
    emoclew

    这个逻辑在任何编程语言中使用反转字符串与共同逻辑:启动从字符串的最后位置,并保持印刷字符,直到达到第一个位置。我们从最后一个位置开始循环字符串并移向开头。 length 命令给出传递给它的参数的长度。没有参数,length 给出当前行的长度,即 $0。 awk 中的 substr 命令一次提取一个字符,并附加到结果变量 x 中,该变量在末尾使用 END 标签打印。

  3. sed 命令:这里总共使用了 2 个 sed 命令。
    $ echo welcome | sed 's/./&\n/g' | tac | sed -e :a -e 'N;s/\n//g;ta'
    
    emoclew

    要正确理解此命令,请在每个管道处将其分解并观察输出。第一个 sed 读取一个字符(.) 并在每个匹配的字符(&) 后面附加一个换行符 (\n)字符。 tac 命令反转文件或标准输入的内容。第二个 sed 命令现在将所有行连接在一起。
    注意: tac 命令并非在所有 Unix 版本中都存在。

  4. Perl 解决方案:使用内置的 perl函数反向。
    $ echo welcome | perl -ne 'chomp;
    print scalar reverse;'
    
    emoclew

    reverse函数反转列表中存在的所有元素。在此处使用的标量上下文中,它也反转字符串。的格格命令用于删除字符串中的换行字符。