sed删除两个关键字之间的文字怎么写

sh/bash/dash/ksh/zsh等Shell脚本
回复
shepx
帖子: 42
注册时间: 2006-10-31 9:46

sed删除两个关键字之间的文字怎么写

#1

帖子 shepx » 2011-08-16 19:01

例如我想将 AAA$BBB.CCC 替换成 AAA.DDD
就是把CCC替换成DDD, 把$和.CCC之间的删除。

不太会写shell,搞了半天都不正确,请高手帮个忙。
THX
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: sed删除两个关键字之间的文字怎么写

#2

帖子 cjxgm » 2011-08-16 19:36

代码: 全选

echo 'AAA$BBB.CCC' | sed 's/\(.*\)\$.*\.CCC\(.*\)/\1.DDD\2/g'
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
jarlyyn
帖子: 4671
注册时间: 2006-04-12 18:54
联系:

Re: sed删除两个关键字之间的文字怎么写

#3

帖子 jarlyyn » 2011-08-16 21:19

sed "s/aaa.*ccc/aaa\.ddd/"
shepx
帖子: 42
注册时间: 2006-10-31 9:46

Re: sed删除两个关键字之间的文字怎么写

#4

帖子 shepx » 2011-08-16 22:44

cjxgm 写了:

代码: 全选

echo 'AAA$BBB.CCC' | sed 's/\(.*\)\$.*\.CCC\(.*\)/\1.DDD\2/g'
验证正解,谢谢1楼。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: sed删除两个关键字之间的文字怎么写

#5

帖子 eexpress » 2011-08-17 8:35

没最小匹配的正则,都是没用的。
幸好sed缺省不跨行处理。
● 鸣学
头像
jarlyyn
帖子: 4671
注册时间: 2006-04-12 18:54
联系:

Re: sed删除两个关键字之间的文字怎么写

#6

帖子 jarlyyn » 2011-08-17 9:11

eexpress 写了:没最小匹配的正则,都是没用的。
幸好sed缺省不跨行处理。
最小匹配?

懒惰匹配?

sed有啊。

我折腾过。跨行懒惰匹配

么什么问题
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: sed删除两个关键字之间的文字怎么写

#7

帖子 eexpress » 2011-08-17 10:13

我就是说你们上面的,没体现出来嘛。这应该是最基本要写出来的。lz却认为已经正确了。
● 鸣学
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: sed删除两个关键字之间的文字怎么写

#8

帖子 cjxgm » 2011-08-17 14:44

shepx 写了:验证正解,谢谢1楼
:em34
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
jarlyyn
帖子: 4671
注册时间: 2006-04-12 18:54
联系:

Re: sed删除两个关键字之间的文字怎么写

#9

帖子 jarlyyn » 2011-08-17 15:41

eexpress 写了:我就是说你们上面的,没体现出来嘛。这应该是最基本要写出来的。lz却认为已经正确了。
问题楼主也没说要懒惰啊……
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: sed删除两个关键字之间的文字怎么写

#10

帖子 我就是我2 » 2011-08-17 21:17

:em20 :em20 :em20
cjxgm 写了:
shepx 写了:验证正解,谢谢1楼
:em34
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: sed删除两个关键字之间的文字怎么写

#11

帖子 fnan » 2011-08-18 1:02

echo 'AAA$BBB.CCC' | sed 's/\$[^$]*\.CCC/.DDD/g'
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
shepx
帖子: 42
注册时间: 2006-10-31 9:46

Re: sed删除两个关键字之间的文字怎么写

#12

帖子 shepx » 2011-08-19 14:22

cjxgm 写了:
shepx 写了:验证正解,谢谢1楼
:em34
E ... 笔误了 。。。 2楼
:em06
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: sed删除两个关键字之间的文字怎么写

#13

帖子 我就是我2 » 2011-09-03 0:31

代码: 全选

i='AAA$BBB.CCC'
echo ${i/\$*CCC/.DDD}
:em03
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
回复