Bash字符串处理(与Java对照) - 28.去除前后空白
In Java
String trim()
返回字符串的副本,忽略前导空白和尾部空白。
In Bash
使用echo命令去除串中的空白
echo $STR
注意 $STR 不要带引号。因为 $STR 展开后,会作为 echo 的参数。那么 echo
在处理参数的时候,自然会忽略首尾的空格。不过此种方法有个小问题,那就是 echo 输出的结果,会将字符串中间的连续空格变成一个空格。例如
$STR 为 " any string " 的话,那么输出将是 "any string"。
[root@jfht ~]# STR=" any string "
[root@jfht ~]# echo $STR
any string
[root@jfht ~]# echo [$STR]
[ any string ]
使用grep命令去除前后空白
echo "$STR" | grep -o "[^ ]\+\( \+[^ ]\+\)*"
用 "[^ ]+( +[^ ]+)*" 去匹配除首尾空格外的部分,然后 -o 仅输出匹配的部分,这样就达到去除首尾空格的效果了。
man grep 写道
-o, --only-matching
Show only the part of a matching line that matches PATTERN.
[root@jfht ~]# echo "$STR" | grep -o "[^ ]\+\( \+[^ ]\+\)*"
any string
使用expr match去除前后的空白
错误:expr match "$STR" "[[:space:]]*\(.*\)[[:space:]]*"
[root@jfht ~]# expr match "$STR" "[[:space:]]*\(.*\)[[:space:]]*"
any string
但是下面的情况表明这个方法不可行。因为正则表达式是贪婪匹配的。
[root@jfht ~]# STR="
> 123
> 456 6
>
>
> "
[root@jfht ~]# echo $STR
123 456 6
[root@jfht ~]# echo "$STR"
123
456 6
[root@jfht ~]# expr match "$STR" "[[:space:]]*\(.*\)[[:space:]]*"
123
456 6
[root@jfht ~]#
正确:expr match "$STR" "[[:space:]]*\(.*[^[:space:]]\+\)[[:space:]]*"
[root@jfht ~]# expr match "$STR" "[[:space:]]*\(.*[^[:space:]]\+\)[[:space:]]*"
123
456 6
[root@jfht ~]#
本文链接:http://codingstandards.iteye.com/blog/1164914
(转载请注明出处)
返回目录:Java程序员的Bash实用指南系列之字符串处理(目录)
上节内容:Bash字符串处理(与Java对照) - 27.转换大小写
下节内容:Bash字符串处理(与Java对照) - 29.字符串翻转(字符串反转、字符串反序)
分享到:
相关推荐
MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个实现了JDBC(Java Database Connectivity)标准的MySQL驱动程序。"mysql-connector-java-5.1.40.tar.gz" 是这个驱动程序的一个特定版本,版本号为...
bash-3.1-MSYS-1.0.11-snapshot.tar.bz2 ffmpeg 安装用包!
在centos6或rhel6 操作系统安装bash-completion-2.1-6.el7.noarch.rpm后,重启即生效
libguestfs-bash-completion-1.40.2-28.module_el8.5.0+821+97472045.noarch(1).rpm官方离线安装包,亲测可用
离线安装包,测试可用
linux 服务器GNU Bash小于版本4.3有操作系统命令注入漏洞,需要对bash升级,下载解压 #tar zxvf bash-4.4.tar.gz #cd bash-4.4 #./configure (如果centos7编译失败,请先安装#yum install gcc) #make #make ...
.git-completion.bash
3. **文本块(Text Blocks)**:Java 13 引入的新语法特性,使得多行字符串的编写更加直观,减少了转义字符的困扰。 4. **记录类(Record Classes)**:Java 14 添加的记录类简化了创建不可变数据对象的过程,自动...
-bash: /usr/local/jdk/jdk1.8.0_181/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 安装完后 java -version 查看版本出现: 原因是:没有那个文件或目录,找了很久发现需要...
```bash rpm -ivh libaio-devel-0.3.106-3.2.i386.rpm ``` 而对于 x86_64 系统,则是: ```bash rpm -ivh libaio-devel-0.3.106-3.2.x86_64.rpm ``` 安装完成后,libaio-devel 提供的头文件(如 `libaio.h`)和开发...
centos6的yum源里面没有bash-completion的包,需要单独下载安装。centos7的yum源里面已包含此安装包,可以通过yum直接安装。 **安装步骤** 1、rpm -ivh bash-completion-1.3-7.el6.noarch.rpm (如有依赖报错,请按照...
Apache Tomcat是一款开源的Java Servlet容器,用于部署和运行Java Web应用程序。在Linux系统中安装`apache-tomcat-8.5.55.tar.gz`文件的过程涉及多个步骤,包括下载、解压、配置和启动服务。以下是详细的安装和配置...
git-bash.exe
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
在Linux系统中,字体管理是实现正确显示各种字符集,包括中文字符,的关键部分。`fontconfig`是一个开源的字体配置库,它负责管理和查找系统中的字体,为应用程序提供统一的接口来处理字体问题。在没有互联网连接...
MySQL Connector/J 8.0.13 是MySQL数据库与Java应用程序之间的重要桥梁,它是Oracle官方提供的用于Java平台的MySQL驱动程序。这个jar包允许开发者在Java应用中执行SQL语句,进行数据的读取、写入和管理MySQL数据库。...
bash-4.1.2-9.el6_2.i686.rpm是centos工具类。
修复redhat6 bash远程执行任意代码漏洞CVE-2014-6271
5. **文本块(Text Blocks)**:预览特性,允许在代码中方便地插入多行字符串,减少转义字符的使用。 在下载和安装Java JDK 11.0.8之后,开发者可以使用`javac`编译Java源代码,生成字节码(`.class`文件)。通过`...
redhat bash漏洞补丁包含文件:bash-4.1.2-15.el6_5.2.i686.rpmbash-4.1.2-15.el6_5.2.x86_64.rpmbash-3.0-27.el4.i386.rpmbash-3.0-27.el4.x86_64.rpmbash-3.2-33.el5_11.4.i386.r... redhat bash漏洞补丁 包含文件...