Sed将替换一定数量的事件

Sed将替换一定数量的事件,sed,Sed,我有下面的replace sed脚本,它适用于每行的第一次出现,但我正在尝试使它适用于每行的前两次出现,而不是一次(/1)或整行(/g): 有没有办法通过组合sed命令或创建脚本来实现这一点?我能提供的最好方法是 sed -r '2,$ { s/(^|,) *[a-z]/\U&/; s//\U&/; }' \U&技巧使用了一个事实,即空格的大写版本仍然是空格;这是为了缩短重复时间。因为不再使用捕获,所以可以稍微简化正则表达式 在第二个s命令中,/是最近尝试的正则表达式的替代,因

我有下面的replace sed脚本,它适用于每行的第一次出现,但我正在尝试使它适用于每行的前两次出现,而不是一次(/1)或整行(/g):


有没有办法通过组合sed命令或创建脚本来实现这一点?

我能提供的最好方法是

sed -r '2,$ { s/(^|,) *[a-z]/\U&/; s//\U&/; }'
\U&
技巧使用了一个事实,即空格的大写版本仍然是空格;这是为了缩短重复时间。因为不再使用捕获,所以可以稍微简化正则表达式

在第二个
s
命令中,
/
是最近尝试的正则表达式的替代,因此第一个基本上是第二次执行的(这一次与最初的第二次外观匹配)


由于
/1
实际上没有做任何事情(默认情况下替换第一次出现的内容),我冒昧地将其删除。

使用
/1
执行
/s//
操作的两倍(
1
在本例中是可选的),没有X次。另一个解决方案是构建正则表达式,包括2个occurenceswow!这很有魅力!之所以有/1,是因为我用它把第二列的第一个字母变成大写,所以基本上我用/1或/2只是为了让我看起来更清楚。
sed -r '2,$ { s/(^|,) *[a-z]/\U&/; s//\U&/; }'