Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash sed仅替换第一次出现,然后仅替换第二次出现,然后仅替换第三次出现_Bash_Awk_Sed - Fatal编程技术网

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,但真的,真的不喜欢。

你能试试下面的吗。如果我答对了您的问题,以下内容将仅替换第一次出现的
椅子
。使用GNU
sed
进行测试和编写

echo "chair melon cow pushing danced chair chair pushing cow danced" | 
sed 's/chair/REPLACE/1'

注意:这里需要注意的一个重要问题是,假设您第一次运行此命令并替换了第一次出现的椅子,那么在下一次尝试中,您希望替换第二次出现的椅子,因为第一次出现的椅子已经被新文本替换,所以在使用时要小心。我想在这里提一下。

正是我需要的,谢谢你的快速回答!这甚至对BSD
sed
(使用El Capitan)有效