Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
696 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 Answer

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...