Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
699 views
in Technique[技术] by (71.8m points)

regex - upper- to lower-case using sed

I'd like to change the following patterns:

getFoo_Bar

to:

getFoo_bar

(note the lower b)

Knowing neither foo nor bar, what is the replacement pattern?

I started writing

sed 's/(get[A-Z][A-Za-z0-9]*_)([A-Z])/1

but I'm stuck: I want to write "2 lower case", how do I do that?

Maybe sed is not adapted?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

To change getFoo_Bar to getFoo_bar using sed :

echo "getFoo_Bar" | sed 's/^(.{7})(.)(.*)$/1l23/'

The upper and lowercase letters are handled by :

  • U Makes all text to the right uppercase.
  • u makes only the first character to the right uppercase.
  • L Makes all text to the right lowercase.
  • l Makes only the first character to the right lower case. (Note its a lowercase letter L)

The example is just one method for pattern matching, just based on modifying a single chunk of text. Using the example, getFoo_BAr transforms to getFoo_bAr, note the A was not altered.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...