Bash的字符串替换某些字符与其他 [英] Bash string replacing some chars with another

查看:90
本文介绍了Bash的字符串替换某些字符与其他的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个像

字符串

AxxBCyyyDEFzzLMN

我要全部更换 X 以Z _ 使输出为

  A_BC_DEF_LMN

该怎么做?

我知道了一系列

 回声$字符串| TR'X''_'| TR'Y''_'

将工作,但我想这样做,在一气呵成,而无需使用管道

编辑:下面的工作。

 回声$字符串| TR[XYZ]''_'


解决方案

 回声$字符串| TR XYZ _

将取代每次出现 X 以Z _ ,使 A__BC ___ DEF__LMN 在你的例子。

 回声$字符串| SED -rS / [XYZ] + / _ / G'

将取代重复的出现X 以Z 有一个 _ ,使 A_BC_DEF_LMN 在你的例子。

I have a string like

AxxBCyyyDEFzzLMN

I want to replace all x and y and z with _ so that the output is

A_BC_DEF_LMN

How to do that?

I know a series of

echo "$string" | tr 'x' '_' | tr 'y' '_' 

will work, but I want to do that in one go, without using pipes

EDIT: The following worked

echo "$string" | tr '[xyz]' '_'

解决方案

echo "$string" | tr xyz _

would replace each occurrence of x, y, or z with _, giving A__BC___DEF__LMN in your example.

echo "$string" | sed -r 's/[xyz]+/_/g'

would replace repeating occurrences of x, y, or z with a single _, giving A_BC_DEF_LMN in your example.

这篇关于Bash的字符串替换某些字符与其他的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆