Bash sed仅替换第一次出现,然后仅替换第二次出现,然后仅替换第三次出现
我有这样一个字符串:Bash sed仅替换第一次出现,然后仅替换第二次出现,然后仅替换第三次出现,bash,awk,sed,Bash,Awk,Sed,我有这样一个字符串: chair melon cow pushing danced chair chair pushing cow danced 我想让sed在第一次替换第一次出现的椅子: REPLACED melon cow pushing danced chair chair pushing cow danced 然后第二个: chair melon cow pushing danced REPLACED chair pushing cow danced 然后是第三个: chair m
chair melon cow pushing danced chair chair pushing cow danced
我想让sed在第一次替换第一次出现的椅子
:
REPLACED melon cow pushing danced chair chair pushing cow danced
然后第二个:
chair melon cow pushing danced REPLACED chair pushing cow danced
然后是第三个:
chair melon cow pushing danced chair REPLACED pushing cow danced
我可以自己创建循环和+1增加,我只需要知道sed(BSD或GNU不重要)是否允许通过指定整数实现类似的功能
几乎像:sed$number',/chair/{s/chair/replacemented/}'
,尽管这不是我想要的方式。我只是把它放在那个里,以表明我希望从变量中输入一个整数
我不介意使用awk,但真的,真的不喜欢。你能试试下面的吗。如果我答对了您的问题,以下内容将仅替换第一次出现的
椅子
。使用GNUsed
进行测试和编写
echo "chair melon cow pushing danced chair chair pushing cow danced" |
sed 's/chair/REPLACE/1'
注意:这里需要注意的一个重要问题是,假设您第一次运行此命令并替换了第一次出现的椅子,那么在下一次尝试中,您希望替换第二次出现的椅子,因为第一次出现的椅子已经被新文本替换,所以在使用时要小心。我想在这里提一下。正是我需要的,谢谢你的快速回答!这甚至对BSD
sed
(使用El Capitan)有效