如何使用程序“sed”替换字符串,但只能在文件的第一行?
命令s/test/blah/1
和1s/test/blah/
似乎不起作用。还有其他方法吗?
这可能对您有用(GNU sed):
sed -i '1!b;s/test/blah/' file
只会在第一行替换第test
一个blah
。
或者,如果您只想更改第一行:
sed -i '1c\replacement' file
这将做到:
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
这将替换所有匹配项,而不仅仅是第一个匹配项,当然仅在第一行中:
sed -i '1s/test/blah/g' file
/g 完成了替换多个匹配项(如果存在)的技巧。