使用 sed 只更改连续重复的字母 [英] Using sed to change only consecutive repeated letters
本文介绍了使用 sed 只更改连续重复的字母的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用 sed,如何将字母 'a' 更改为 'A',但前提是它作为两个或多个连续字母重复出现.示例,来自:
星系耳朵土狼啊啊啊啊啊
进入
星系耳朵阿尔德瓦克哈哈
解决方案
您可以使用组来完成.如果你有这个文件:
$ cat a星系耳朵土狼啊啊啊啊啊乌兰巴托
你可以使用这个 sed 命令:
$ sed 's/\(.\)\1\{1,\}/\U&/g' a星系耳朵阿尔德瓦克哈哈乌兰巴托
这里发生了什么?如果我们有一个字符,打包"在一个组 (\(.\)
) 中,并且这个组 (\1
) 自身重复一次或多次(\(.\)
)>\1\{1,\}),然后将匹配的部分 (&
) 替换为其大写版本 (\U&
).>
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
解决方案
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&
).
这篇关于使用 sed 只更改连续重复的字母的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文