我想找到字符串并__MARKER__
在someFile.txt
其上方放置一个字符串(例如Hello World!
)。
我该如何使用来实现这一点sed
?
sed -i -e "/__MARKER__//g" someFile.txt # Currently removes __MARKER__.
内容someFile.txt
:
__MARKER__
someFile.txt
处理后内容:
Hello World!
__MARKER__
答案1
sed -i -e 's/__MARKER__/Hello world\n&/' someFile.txt
替换__MARKER__
为Hello world
、换行符和匹配项 ( &
),即文本__MARKER__
。
只需&
节省__MARKER__
一次输入即可,例如
sed -i -e 's/__MARKER__/Hello world\n__MARKER__/' someFile.txt
答案2
如果只有一个实例__MARKER__
或者如果你想在每个实例前插入新字符串,你可以使用
sed -i '/__MARKER__/ iHello World!' someFile.txt
这使用我nsert 命令,而不是substitute 命令 - 请注意,在 POSIX(非 GNU)上,sed
您可能需要将插入字符串放在单独的行上:
sed -i '/__MARKER__/ i\
Hello World!
' someFile.txt
如果有多个实例,并且你只希望在第一个实例之前插入字符串,那么
sed -i '0,/__MARKER__/ s//Hello World!\n&/' someFile.txt