Unix 使用sed命令从第2次替换到第4次
我想用“@”替换从第2次出现到第4次出现的pUnix 使用sed命令从第2次替换到第4次,unix,sed,Unix,Sed,我想用“@”替换从第2次出现到第4次出现的p sed 's/p/@/2g' file.txt 此命令从第二次出现到最后一次出现“p”进行替换。 但是我想从第二名换到第四名。 那么怎么做呢?假设这是bash或zsh,您可以使用大括号扩展 sed -e's/p/@/2'{,,} file {,}将重复-e的/p/@/2'三次,因此它将取代第二、第三和第四个ps.这可能适合您(GNU-sed): 用换行符替换一行上的第五个和后续的p,用@替换第二个和后续的p,最后将换行符恢复为p 或者,向奥古斯·
sed 's/p/@/2g' file.txt
此命令从第二次出现到最后一次出现“p”进行替换。
但是我想从第二名换到第四名。
那么怎么做呢?假设这是bash或zsh,您可以使用大括号扩展
sed -e's/p/@/2'{,,} file
{,}
将重复-e的/p/@/2'
三次,因此它将取代第二、第三和第四个p
s.这可能适合您(GNU-sed):
用换行符替换一行上的第五个和后续的p
,用@
替换第二个和后续的p
,最后将换行符恢复为p
或者,向奥古斯·伊斯梅尔致敬:
sed -e's/p/@/'{4..2} file
这使用bash扩展为出现的
p
的2到4生成替换字符串,但相反(正向替换将不考虑以前的替换)。只需在不使用g
的情况下重复该命令三次:sed-e's/p/@/2'-e's/p/@/2'-e's/p/@/2'文件即可,有没有其他方法可以解释你在问题中的要求。如果一个解决方案适合你,为什么不使用它呢?谢谢你的解决方案。但是我只是想知道还有其他的方法。在解释了为什么sed-e的s/p//2'-e的s/p//2'-e的s/p//2'-e的s/p//2'
或者sed-e的/p//2'{,}
不是你需要的。谢谢这个方法,有没有其他方法使用sed命令。也许sed-e的/p/'{4..2}文件
?
sed -e's/p/@/'{4..2} file