17

如何使用程序“sed”替换字符串,但只能在文件的第一行?

命令s/test/blah/11s/test/blah/似乎不起作用。还有其他方法吗?

4

3 回答 3

34

这可能对您有用(GNU sed):

sed -i '1!b;s/test/blah/' file

只会在第一行替换第test一个blah

或者,如果您只想更改第一行:

sed -i '1c\replacement' file 
于 2012-09-21T12:24:43.093 回答
3

这将做到:

sed -i '1s/^.*$/Newline/' textfile.txt

如果无法确保匹配仅对第一行是唯一的:

sed -i 's/this is line one and its unique/Changed line one to this string/' filename.txt

-i选项将更改写入文件,而不是仅将输出显示到标准输出。

编辑:

通过匹配公共字符串来替换整行将是:

sed -i 's/^.*COMMONSTRING$/Newline/'

where^匹配行首,$匹配行尾,.*匹配所有内容COMMONSTRING

于 2012-09-21T07:43:53.223 回答
2

这将替换所有匹配项,而不仅仅是第一个匹配项,当然仅在第一行中:

 sed -i '1s/test/blah/g' file

/g 完成了替换多个匹配项(如果存在)的技巧。

于 2018-08-24T11:32:01.030 回答