如何使用程序“sed”替换字符串但仅在文件的第一行?
命令s/test/blah/1
和1s/test/blah/
似乎不起作用。还有另一种方式吗?
答案 0 :(得分:28)
这可能适合你(GNU sed):
sed -i '1!b;s/test/blah/' file
只会在第一行替换test
的{{1}}。
或者,如果您只想更改第一行:
blah
答案 1 :(得分:2)
这样做:
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
选项将更改写入文件,而不是仅将输出显示到stdout。
编辑:
通过匹配公共字符串来替换整行将是:
sed -i 's/^.*COMMONSTRING$/Newline/'
^
匹配行的开头,$
匹配行尾,.*
匹配COMMONSTRING
答案 2 :(得分:0)
这将替换所有匹配项,而不仅是第一个匹配项,而且仅替换第一行:
sed -i '1s/test/blah/g' file
/ g欺骗了,以替换多个匹配项(如果有)。