`

Bash字符串处理(与Java对照) - 29. 字符串翻转

阅读更多

Bash字符串处理(与Java对照) - 29.字符串翻转(字符串反转、字符串反序)

In Java

StringBuilder.reverse || StringBuffer.reverse

 

StringBuffer sb = new  StringBuffer(str);

String str2 = sb.reverse().toString();

 

In Bash

编写一个Bash函数来实现字符串翻转

格式:strrev "$STR"

 

strrev(){
    local src=$1
    local len=${#src}
    local i
    local dst
    for ((i=len-1; i>=0; --i)) {
        dst="$dst${src:i:1}"
    }
    echo "$dst"
}

 

[root@jfht ~]# STR=12345

[root@jfht ~]# strrev "$STR"
54321
[root@jfht ~]#

尝试一个多行文本。

[root@jfht ~]# STR="12345
> hello"
[root@jfht ~]# strrev "$STR"
olleh
54321
[root@jfht ~]#

 

使用外部命令rev来实现字符串翻转

格式:echo "$STR" | rev

格式:rev <<< "$STR"

注意:rev命令是把每行文本进行翻转。

 

man rev 写道
NAME
     rev - reverse lines of a file

SYNOPSIS
     rev [file]

DESCRIPTION
     The rev utility copies the specified files to the standard output, reversing the order of characters in every
     line.  If no files are specified, the standard input is read.
 

[root@jfht ~]# echo "12345" | rev
54321

[root@jfht ~]# rev <<<"12345"
54321

[root@jfht ~]# STR=12345
[root@jfht ~]# echo "$STR" | rev
54321
[root@jfht ~]# rev <<< "$STR"
54321
[root@jfht ~]#

尝试一个多行文本。

[root@jfht ~]# STR="12345
> hello"
[root@jfht ~]# strrev "$STR"
olleh
54321
[root@jfht ~]# echo "$STR" | rev
54321
olleh
[root@jfht ~]# rev <<<"$STR"
54321
olleh
[root@jfht ~]#

 

使用rev和tac命令实现字符串翻转

格式:echo "$STR" | tac | rev

格式:echo "$STR" | rev | tac

 

man tac 写道
NAME
       tac - concatenate and print files in reverse

SYNOPSIS
       tac [OPTION]... [FILE]...

DESCRIPTION
       Write each FILE to standard output, last line first.  With no FILE, or when FILE is -, read standard input.
 

[root@jfht ~]# STR="12345
> hello"
[root@jfht ~]# echo "$STR" | tac | rev
olleh
54321
[root@jfht ~]# echo "$STR" | rev | tac
olleh
54321
[root@jfht ~]#

 

使用awk命令实现字符串翻转

格式:echo "$STR" | awk -F "" '{for(i=NF;i>0;i--)print $i}'

格式:awk -F "" '{for(i=NF;i>0;i--)print $i}' <<<"$STR"

 

 

使用sed命令实现字符串翻转

# 将行中的字符逆序排列,第一个字成为最后一字,……(模拟“rev”)

来自:http://bbs.chinaunix.net/viewthread.php?tid=859821&extra=&page=1

格式:echo "$STR" | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

格式:sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' <<<"$STR"

 

[root@jfht ~]# echo "12345" | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
54321
[root@jfht ~]# STR=12345
[root@jfht ~]# echo "$STR" | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
54321
[root@jfht ~]# STR="12345
> hello"
[root@jfht ~]# echo "$STR" | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
54321
olleh
[root@jfht ~]# sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' <<<"$STR"
54321
olleh
[root@jfht ~]#

 

 

本文链接:http://codingstandards.iteye.com/blog/1164916   (转载请注明出处)

返回目录:Java程序员的Bash实用指南系列之字符串处理(目录) 

上节内容:Bash字符串处理(与Java对照) - 28.去除前后空白

下节内容:Bash字符串处理(与Java对照) - 30.综合实例:自动生成版本号源文件

 

4
3
分享到:
评论
1 楼 tim_ubuntu 2011-11-09  
good,学习了~

相关推荐

    PyPI 官网下载 | bitvector-for-humans-0.8.0.tar.gz

    5. **转换功能**:可以将位向量转换为整数或字符串形式,便于输出和与其他数据类型交互。 6. **扩展功能**:可能还包含其他高级功能,如位向量的切片、合并、位移等,这些都极大地提升了位向量在实际应用中的灵活性...

    利用perl、python、php、shell、sed、awk、c 实现字符串的翻转

    ### 字符串翻转在不同编程语言中的实现 本文旨在探讨如何使用Perl、Python、PHP、Shell、SED、AWK及C语言等不同工具和技术来实现字符串翻转的功能。通过对比不同语言的特点与优劣,我们可以更好地理解每种语言的...

    sed学习笔记

    1. 字符串翻转 ```bash echo 1234567890 | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' ``` 这个命令将字符串倒序输出。 ### 四、选择性输出 1. **打印文档奇数行(隔行输出)** 使用 `n` 命令跳过偶数行...

    reverse

    这里的"reverse"可能是指一个Shell脚本或程序,用于执行某些反转操作,比如字符串翻转、数组反转等。下面我们将深入探讨与"reverse"相关的Shell知识。 Shell是Unix/Linux操作系统中的命令解释器,它提供了一个交互...

    Python Image模块基本图像处理操作小结

    ### Python Image模块基本图像处理操作详解 #### 一、引言 在图像处理领域,Python是一种...- 《Python字符串操作技巧汇总》 - 《Python入门与进阶经典教程》 希望本文能帮助您更好地理解和应用Python图像处理技术。

Global site tag (gtag.js) - Google Analytics