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.字符串翻转(字符串反转、字符串反序)
分享到:
相关推荐
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官方离线安装包,亲测可用
离线安装包,测试可用
-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 查看版本出现: 原因是:没有那个文件或目录,找了很久发现需要...
openjdk-18.0.1.1(openjdk-18.0.1.1_linux-x64_bin.tar.gz)适用于Linux x64 系统:
git-bash.exe
修改redhat 7 bash远程执行任意代码漏洞
bash-4.1.2-9.el6_2.i686.rpm是centos工具类。
在Linux下使用sqlplus或者rman时,经常需要调用上次或之前运行过的命令 下载包地址: ... 地址2: ... 1. rpm -ivh rlwrap-0.42-1.el7.x86_64.rpm ...2. 检查包是否安装上 rpm -qa rlwrap ...4. 生效: source .bash_profile
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漏洞补丁 包含文件...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
修复redhat6 bash远程执行任意代码漏洞CVE-2014-6271
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
命令补全 Centos6/7或Rhel6/7 安装 bash-completion-2.1-6.el7.noarch.rpm 后重启即生效
网上有很多bash补丁下载,但都是x86_64架构的,针对i686的下载很少,bash-4.1.2-15.el6_5.2.src.rpm 也很难下载,希望上传的这个bash-4.1.2-15.el6_5.2.i686.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 ...
离线安装包,亲测可用
执行如下命令查看设备是否存在bash安全漏洞。 #env -i X='() { (a)=>\\' bash -c '/dev/stdout echo vulnerable' 2>/dev/null 判定依据 如果以上命令的输出为以下内容则不合规: vulnerable
.git-completion.bash