Linux命令——字符串反转
一、rev命令
1.字符串反转
2.一个或多个文件的反转
echo "A B C D" | rev
二、sed 命令
echo 'ABCD' | sed 's/\(.\)\(.\)\(.\)\(.\)/\4\3\2\1/g'
1 echo 'ABCD' | sed -r 's/(.)(.)(.)(.)/\4\3\2\1/'
(.) 正则表达式中的分组匹配,匹配之后再用具体位置参数 \4 \3 \2 \1来实现反转
-r 使用-r参数,表示扩展正则表达式,就不用使用\来进行转义
1 echo '123456789' | sed -r '/\n/!G;s/(.)(.*\n)/&\2\1/;//D;s/.//'
三、awk命令
1 echo ABCD | awk '{for(i=1;i<=length;i++) {line=substr($0,i,1) line}} END{print line}'
1)substr($i,0,1)表示取当前字符从索引i开始,取当前位
2)length 为当前字符串的长度
3)line=substr($i,0,1) line 将三个值分别保存在内存栈中
>substr($3,6,2) 表示从第三个字段里的第六个字符开始。截取两个字符结束
>substr($3,6) 表示从第三个字段里的第六个字符开始,直到结束
四、利用python
1 echo ABCD | python -c 'print raw_input()[::-1]'
[::-1] 实现字符串的反转
-c commond 表示运行时以命令性字符串提交python脚本
raw_input() 将管道传过来的值作为字符串输入
五、Perl
1 echo ABCD | perl -nle 'print scalar reverse $_'
1)print scalar reverse $_ 将管道传过来的字符串传到默认标量$_,再用reverse取反
2) -e 让Perl程序可以在Perl命令行中运行,比如: perl -e 'print "Hello,World!\n"'
3) -n 增加了循环功能,可以一行行处理文本
4) -l 用来给每行增加一个换行符"\n"
六、利用bash实现
1 echo ABCI | { read; for((i=${#REPLY};i>0;i--)) do echo -n ${REPLY:i-1:1};done;echo; }
1) { cmd1;cmd2;cmd3;},在当前的Shell下顺序执行命令,第一条命令与{之间有空格,最后一个命令;结尾
2) read通过管道读取传过来的字符串,让其放置在默认的REPLY变量中,再通过循环${str:i:1}显示