反转字符串 |外壳编程
我们得到一个字符串,我们必须使用 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 脚本中的字符串
- rev 命令:用于反转文件中的行。此命令可以采用标准输入以及如下所示。
$ echo welcome | rev emoclew
注意: rev 命令并非在所有版本的 Unix 中都存在。
- 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 标签打印。
- 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 版本中都存在。 - Perl 解决方案:使用内置的 perl函数反向。
$ echo welcome | perl -ne 'chomp; print scalar reverse;' emoclew
reverse函数反转列表中存在的所有元素。在此处使用的标量上下文中,它也反转字符串。的格格命令用于删除字符串中的换行字符。