linux.how中的sed命令使用sed只替换前n次出现

时间:2013-12-21 07:21:49

标签: bash unix

我想只替换LC-COUNT = 1的前四次出现。我可以这样做吗。

sed -i "s/LC-COUNT=1/LC-COUNT=$LC_COUNT/1,4"  file.txt

2 个答案:

答案 0 :(得分:4)

试试这个 -

sed -e '0,/LC-COUNT=1/s//LC-COUNT=\$LC_COUNT/' file.txt > output.txt

仅运行一次会将LC-COUNT=1的第一次出现替换为LC-COUNT=$LC_COUNT,并将输出output.txt文件。注意:您必须先转义 $ char。

您必须运行四次。但是下次将output.txt视为原始文件,我的意思是在output.txt中进行替换。

我认为使用sed无法找到并替换第一个 N 出现次数。

在vim你做类似的事情 -

:%s/LC-COUNT=1/LC-COUNT=\$LC_COUNT/gc

gc选项会要求您确认每个查找替换。你可以

答案 1 :(得分:0)

这更适合awk。

考虑这个awk命令:

awk -F= '$1=="LC-COUNT" && c<=4 {$2="=$LC_COUNT";c++}1' OFS= file