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
506 views
in Technique[技术] by (71.8m points)

text - Using sed to change only consecutive repeated letters

Using sed, how to change the letter 'a' to 'A' but only if it appears repeated as two or more consecutive letters. Example, from:

galaxy
ear
aardvak
Haaaaaaaaa 

into

galaxy
ear
AArdvak
HAAAAAAAAA 
See Question&Answers more detail:os

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

1 Reply

0 votes
by (71.8m points)

You can do it using groups. If you have this file:

$ cat a
galaxy
ear
aardvak
Haaaaaaaaa 
Ulaanbaatar

You can use this sed command:

$ sed 's/(.)1{1,}/U&/g' a
galaxy
ear
AArdvak
HAAAAAAAAA 
UlAAnbAAtar

What does happen here? If we have a char, "packed" in a group ((.)), and this group (1) repeats itself one or more times (1{1,}), then replace the matched part (&) by its uppercased version (U&).


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

...