使用 sed 只更改连续重复的字母 [英] Using sed to change only consecutive repeated letters

查看:50
本文介绍了使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆