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

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.字符串翻转(字符串反转、字符串反序)

 

【AirPlay】苹果认证MFI学习 配件认证是一个过程,通过这个过程,可验证其配件符合MFi技术规范,并通过苹果指定的任何认证测试。MFi门户中的产品计划 "认证 "页面将指导你完成特定配件所需的认证步骤,并指出何时完成所有要求。在完成所有MFi认证要求之前,你不得制造、分发或销售任何配件。在开始MFi认证过程之前,你必须测试你的配件,以确保它符合最新的MFi技术规范,通过产品计划 "测试计划 "上的所有适用测试,并与它将声称具有兼容性的每个苹果设备兼容。 阅读详情

相关推荐

LeGO-LOAM运行kitti数据集

文章目录1. kitti-lego-loam2. 改动3. 实验结果4. evo轨迹测评 1. kitti-lego-loam 链接:kitti-lego-loam kitti-lego-loam提供了将kitti序列转化成rosbag的代码,在kittibag中. 需要注意下数据文件的存放顺序,以00序列为例: datafolder          |____results          &

Zlp19970106的博客 8703

bash 中 trim 字符串(去除首尾空格) - grep 去空行

在 bash 下如何去除一个字符串首尾的空格(也就是 trim)呢?其实有一个简单的办法: $ echo $STR 注 意 $STR 不要带引号。因为 $STR 展开后,会作为 echo 的参数。那么 echo 在处理参数的时候,自然会忽略首尾的空格。不过此种方法有个小问题,那就是 echo 输出的结果,会将字符串中间的连续空格变成一个空格。例如 $ST...

weixin_30597269的博客 942

AMD MI355X与NVIDIA B200在GLM5.2大模型推理性能与成本对比分析

在 AI 推理硬件选型中,成本与性能的平衡一直是技术决策的核心难点。AMD 最新发布的 CDNA 4 架构 MI355X 加速卡与 NVIDIA Blackwell 架构的 B200 在 GLM5.2 这类千亿参数大模型上的表现,直接关系到企业部署私有化模型或提供推理服务的经济性。实际测试数据显示,在 32 tok/s/user 的交互性设定下,单张 MI355X 能够达到 1369 tok/s 的吞吐量,虽然略低于 B200 的 1756 tok/s,但每百万 token 成本仅为 0.30 美元,比 B

weixin_28221501的博客 294

bash实现trim字符串

本文首发于我的Github博客 本文记录了作者使用sed命令对bash中的字符串进行去头尾空格的操作的方法,简单来说 使用echo ' string ' | sed -e 's/^[[:space:]]*//'去除开头的空格 使用echo ' string ' | sed -e 's/[[:space:]]*$//'去除结尾的空格 将二者用管道结合,去除头尾空格echo ' string ' | sed -e 's/[[:space:]]*$//' | sed -e 's/^[[:space:]]*//'

fitzleopard的博客 1377

Go语言AI智能体开发实战:基于LangGraphGo构建下一代工作流引擎

在AI应用开发领域,工作流编排是构建复杂智能系统的核心技术。其核心原理是将任务执行过程建模为状态图,通过节点和边的组合定义数据流转路径,实现多步骤推理与工具调用的自动化。这种基于状态图的编程模型,为智能体提供了清晰的“思考-行动-观察”循环抽象,显著提升了复杂业务逻辑的可维护性和可观测性。从技术价值看,它解决了传统代码中状态分散、流程僵化的问题,支持条件分支、并行执行等高级模式,是实现生产级AI应用的关键基础设施。在应用场景上,该技术广泛适用于客服机器人、自动化审批、数据ETL等需要多步骤协调的领域。本文以

weixin_30457551的博客 360

给麒麟KylinOS服务器加把锁:手把手配置符合等保要求的密码强度策略

本文详细介绍了如何在麒麟KylinOS服务器上配置符合等保要求的密码强度策略,包括pwquality.conf和login.defs的核心参数设置、等保合规的进阶配置技巧以及企业环境中的平衡艺术。通过实战案例和测试方法,帮助管理员构建坚固的密码防线,确保系统安全。

weixin_33749242的博客 418

bash删除字符串前后空格

一、运行截图 这是sed,awk,perl和其他工具的替代品。下面的函数通过查找所有头尾空格并在字符串的开头和结尾删除它来实现这一功能。 :内置用于代替临时变量。 二、示例函数: trim_string() { # Usage: trim_string " example string " : "${1#"${1%%[![:space:]]*}"}" : "${_%"${_##*[![:space:]]}"}" printf '%s\n' "$_"

张音乐的博客 1711

手把手教你用Python模拟侧信道攻击:从电磁辐射到数据窃取(附防御代码)

本文详细介绍了如何使用Python模拟侧信道攻击,从电磁辐射信号采集到数据窃取的全过程,并提供了实用的防御代码。通过实战案例,帮助安全研究员和开发者理解侧信道攻击原理,掌握信号处理与图像重建技术,同时学习有效的噪声干扰和电磁屏蔽防御措施。

weixin_28716443的博客 161

去除Bash 变量中的空白字符 —— 筑梦之路

【代码】去除Bash 变量中的空白字符 —— 筑梦之路。

筑梦之路 1467

手把手教你解决Keil5安装时xerces-c_3_0.dll缺失和0xc000007b报错(附文件下载与路径设置)

本文详细解析了Keil5安装过程中常见的xerces-c_3_0.dll缺失和0xc000007b报错问题,提供了从文件获取、路径设置到系统配置的完整解决方案。同时,文章还涵盖了STM32开发环境的搭建技巧和最佳实践,帮助开发者快速构建稳定的嵌入式开发环境。

weixin_29164497的博客 600

在 Linux/Debian/Ubuntu 上使用 Brasero 刻录光盘

在 Ubuntu 系统中,Brasero 是一个非常方便的光盘刻录工具。无论是创建数据光盘、音频光盘还是刻录光盘镜像文件,Brasero 都能轻松胜任。本文将介绍如何在 Ubuntu 上安装和使用 Brasero 进行光盘刻录。

I AM COMING BACK... 3543

【linux/shell】linux如何去除字符串中空格

linux如何去除字符串中空格 tr命令可以用来替换或删除字符 sed是一个流编辑器,可以用来处理文本

qq_35902025的博客 2980

研一小白投稿SCI:Applied Intelligence从提交到Under Review的保姆级避坑指南

本文为研一学生提供Applied Intelligence期刊投稿的详细指南,涵盖格式校验、状态解析及审稿回应策略。特别强调声明文件、LaTeX模板的常见错误及应对方法,帮助新手避开高频踩坑点,提升投稿成功率。

weixin_29230805的博客 493

BASH字符串处理:字符串分割为数组

http://codingstandards.iteye.com/blog/1164910 Bash字符串处理(与Java对照) - 25.字符串分割(成数组) In Java String.split  String[]     split(String regex)           根据给定的正则表达式的匹配来拆分此字符串。  String[]

zouyongjin的专栏 7763

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Bash字符串处理(与Java对照) - 23.字符串替换、子串删除、子串截取

Bash字符串处理(与Java对照) - 23.字符串替换、子串删除、子串截取 In Java 字符串替换  String     replace(char oldChar, char newChar)           返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。  String     replace(CharSe...

巨人站在肩膀上 633

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java 字符串截取替换_Bash字符串处理(与Java对照) - 23.字符串替换、子串删除、子串截取...

Bash字符串处理(与Java对照) - 23.字符串替换、子串删除、子串截取In Java字符串替换?String ??? replace(char oldChar, char newChar)????????? 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。?String ??? replace(CharSequence target, C...

weixin_39601641的博客 168

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Bash字符串处理(与Java对照) - 11.比较两个字符串大小(字典顺序、数值比较)...

Bash字符串处理(与Java对照) - 11.比较两个字符串大小(字典顺序、数值比较) In Java String.compareTo int     compareTo(String anotherString)           按字典顺序比较两个字符串。如果返回0,表示相等;<0表示小于;>0 表示大于。   int     compareToIgnor...

巨人站在肩膀上 806

python去除空白字符--高级

我们经常遇到需要出去空的的时候。需要清洗或是拼接。尤其是用爬虫的时候!!!但是各个去除空白字符的方法是有区别的。

qq_34786604的博客 1005

Bash字符串处理(与Java对照) - 6.判断字符串是否为空(不为空)

Bash字符串处理(与Java对照) - 6.判断字符串是否为空(不为空) In Java 判断是否为null 是null if (s == null) {     // do something }   不是null if (s != null) {     // do something }   判断是否null或空串 是null或者空串:方法一 if...

巨人站在肩膀上 590

Bash字符串处理(与Java对照) - 8.计算字符串长度

Bash字符串处理(与Java对照) - 8.计算字符串长度 In Java 取字符数量 一个汉字算1个字符。 int len = s.length();   JavaDoc class String 写道 public int length() Returns the length of this string. The length is equal to ...

巨人站在肩膀上 312

Bash字符串处理(与Java对照) - 18.格式化字符串

Bash字符串处理(与Java对照) - 18.格式化字符串 In Java class Formatter 参见:http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax   String.format static String     format(String format,...

巨人站在肩膀上 446

Bash字符串处理(与Java对照) - 21.字符串正则匹配

Bash字符串处理(与Java对照) - 21.字符串正则匹配 In Java 正则表达式查询 String.matches方法 boolean     matches(String regex)           通知此字符串是否匹配给定的正则表达式。 String str = "123456"; String re = "\\d+"; if (str.matc...

巨人站在肩膀上 524

Bash字符串处理(与Java对照) - 12.字符串连接

Bash字符串处理(与Java对照) - 12.字符串连接 In Java String.concat String     concat(String str)           将指定字符串联到此字符串的结尾。   String newStr = str.concat(str2);   StringBuilder.append & StringBuffer...

巨人站在肩膀上 171

Bash字符串处理(与Java对照) - 7.字符串与默认值

Bash字符串处理(与Java对照) - 7.字符串与默认值 In Java StringUtils.defaultString 在字符串为null的时候,返回默认值为""或者指定的字符串。主要是为了避免检查null对象。 org.apache.commons.lang.StringUtils defaultString方法 写道 public static String default...

巨人站在肩膀上 346

Bash字符串处理(与Java对照) - 20.查找子串的位置

Bash字符串处理(与Java对照) - 20.查找子串的位置 In Java String.indexOf  int     indexOf(String str)           返回第一次出现的指定子字符串在此字符串中的索引。  int     indexOf(String str, int fromIndex)           从指定的索引处开始,返回第...

巨人站在肩膀上 328

Bash字符串处理(与Java对照) - 5.字符串输入(读取字符串)

Bash字符串处理(与Java对照) - 5.字符串输入(读取字符串) In Java Scanner类:Scanner.hasNext() & Scanner.next() & Scanner.hasNextLine() & Scanner.nextLine() JavaDoc class Scanner 写道 A simple text scanner whic...

巨人站在肩膀上 235
上一篇: Bash字符串处理(与Java对照) - 27.转换大小写
下一篇: Bash字符串处理(与Java对照) - 29. 字符串翻转
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值