使用Bash在特定行之前插入文本

Pez*_*kow 4 bash shell

如何在找到字符串的第一个位置将一组行(大约5个)插入到文件中?

例如:

BestAnimals.txt

dog
cat
dolphin
cat
Run Code Online (Sandbox Code Playgroud)

$"在cat之前将长颈鹿插入BestAnimals.txt"> NewBestAnimals.txt

NewBestAnimals.txt

dog
giraffe 
cat
dolphin
cat
Run Code Online (Sandbox Code Playgroud)

Fre*_*ihl 10

如果使用gnu sed:

$ cat animals
dog
cat
dolphin
cat

$ sed  "/cat/ { N; s/cat\n/giraffe\n&/ }" animals
dog
giraffe
cat
dolphin
cat
Run Code Online (Sandbox Code Playgroud)
  1. 用(/ cat /)匹配一行
  2. 继续下一行(N)
  3. 将匹配的模式替换为插入和匹配的字符串,其中&表示匹配的字符串.