【发布时间】:2012-09-13 14:49:53
【问题描述】:
如何使用“sed”程序替换文件的第一行中的字符串?
s/test/blah/1 和 1s/test/blah/ 命令似乎不起作用。还有其他方法吗?
【问题讨论】:
-
1s/test/blah/“不起作用”呢?
如何使用“sed”程序替换文件的第一行中的字符串?
s/test/blah/1 和 1s/test/blah/ 命令似乎不起作用。还有其他方法吗?
【问题讨论】:
1s/test/blah/“不起作用”呢?
这可能对你有用(GNU sed):
sed -i '1!b;s/test/blah/' file
只会将第一行的test 替换为第一行的blah。
或者如果您只想更改第一行:
sed -i '1c\replacement' file
【讨论】:
not 在线1 然后branch 到脚本结尾
b 可以忽略其他替换,例如在使用多个-e 选项时。
这样就可以了:
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/'
^ 匹配行首,$ 匹配行尾,.* 匹配直到COMMONSTRING 的所有内容
【讨论】:
这会替换所有匹配项,而不仅仅是第一个匹配项,当然只替换第一行:
sed -i '1s/test/blah/g' file
/g 做到了替换多个匹配项(如果存在)。
【讨论】: