如何在文件中查找字符串并将字符串放置在其上方?

如何在文件中查找字符串并将字符串放置在其上方?

我想找到字符串并__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

相关内容