Shell中反转字符串的几种方法
文章目录1. 使用rev命令2. 使用sed 命令3. 使用perl 命令4.使用awk命令substr截取字符串length 字符串长度5. 利用python1. 使用rev命令在命令行反转字符串[root@server1 myr]# echo "abcd" | revdcba[root@server1 myr]# echo "abc" >file1[root@server1 myr]#
1. 使用rev命令
在命令行反转字符串
[root@server1 myr]# echo "abcd" | rev
dcba
[root@server1 myr]# echo "abc" >file1
[root@server1 myr]# echo "qwe" >file2
[root@server1 myr]# rev file1 file2
cba
ewq
注意: rev 命令不仅仅适用于单个字符串,还用于多个字符串,单个文件,以及多个文件
- 对多个字符串
[root@server1 myr]# echo "abcd" "asdf" "qwer"| rev
rewq fdsa dcba
- 对单个文件
[root@server1 myr]# cat myr
abcd
abc
abc
[root@server1 myr]# cat myr | rev
dcba
cba
cba
- 对多个文件
[root@server1 myr]# echo "abc" >file1
[root@server1 myr]# echo "qwe" >file2
[root@server1 myr]# rev file1 file2
cba
ewq
补充 :tac 命令:是将 cat 反写过来,他的功能就跟 cat 相反, cat 是由“第一行到最后一行连续显示在屏幕上”,而 tac 则是“ 由最后一行到第一行反向在屏幕上显示出来 ”,可以自定义分割符号进行反转 tac -s " " 若不自定义分割符,默认为”\n“
- 举例
[root@server1 myr]# cat myr
abcd
abc
abc: 12
[root@server1 myr]# tac myr
abc: 12
abc
abcd
[root@server1 myr]# tac -s ":" myr
12
abcd
abc
abc:
2. 使用sed 命令
[root@server1 myr]# echo "abcd" | sed 's/\(.\)\(.\)\(.\)\(.\)/\4\3\2\1/g'
dcba
[root@server1 myr]# echo "abcd" | sed -r 's/(.)(.)(.)(.)/\4\3\2\1/'
dcba
- (.)为正则表达式中分组匹配,匹配到之后在用具体位置参数\4\3\2\1来实现反转
- sed -r 为拓展正则表达式,不用加转译符号\
3. 使用perl 命令
[root@server1 myr]# echo "abcd" | perl -nle ' print scalar reverse $_'
dcba
print scalar reverse 将 管 道 传 递 过 来 的 字 符 串 传 到 默 认 标 量 _ 将管道传递过来的字符串传到默认标量 将管道传递过来的字符串传到默认标量_,再用reverse取反
-e 让Perl程序可以在Perl命令行中运行,比如: perl -e ‘print “Hello,World!\n”’
-n 增加了循环功能,可以一行行处理文本
-l 用来给每行增加一个换行符"\n"
4.使用awk命令
[root@server1 myr]# echo "abcd" | awk '{for(i=1;i<=length;i++){line=substr($0,i,1) line}} END{print line}'
dcba
- 解释:
substr截取字符串
- 返回从起始位置起,指定长度之子字符串;若未指定长度,则返回从起始位置到字符串末尾的子字符串。
- 格式:
substr(s,p)
返回字符串s中从p开始的后缀部分
substr(s,p,n)
返回字符串s中从p开始长度为n的后缀部分 - 例子:
[root@test ~]# echo "123" | awk '{print substr($0,1,1)}'
1
awk -F ',' '{print substr($3,6)}'
表示是从第3个字段里的第6个字符开始,一直到设定的分隔符","结束.
substr($3,10,8)
表示是从第3个字段里的第10个字符开始,截取8个字符结束.
substr($3,6)
—> 表示是从第3个字段里的第6个字符开始,一直到结尾
length 字符串长度
- length函数返回没有参数的字符串的长度。length函数返回整个记录中的字符数。
[root@test ~]# echo "123" | awk '{print length}'
3
5. 利用python
[root@server1 myr]# echo "abcd" | python -c "print raw_input()[::-1]"
dcba
更多推荐
所有评论(0)