Usando sed, inserte una línea debajo (o arriba) del patrón?

Necesito editar una buena cantidad de archivos, insertando (2) líneas justo debajo de un patrón único o encima de él. por favor asesórese sobre cómo hacerlo usando sed, awk, perl o cualquier otra cosa en el caparazón. Gracias

some text Hello My love, you're dirty girl more text 

Quiero insertar ‘Lo sé, lo soy, mi sexy caballero’ después de ‘Hola mi amor, eres una chica sucia’, por lo que el archivo de salida se verá como

 some text Hello My love, you're dirty girl I know, I am, my sexy knight more text 

Para agregar después del patrón: (-i es para reemplazar en su lugar). line1 y line2 son las líneas que desea agregar (o anteponer)

 sed -i '/pattern/a \ line1 \ line2' inputfile 

Salida:

 #cat inputfile pattern line1 line2 

Para anteponer las líneas antes:

 sed -i '/pattern/i \ line1 \ line2' inputfile 

Salida:

 #cat inputfile line1 line2 pattern 

Lo siguiente agrega una línea después de SearchPattern .

sed -i '/SearchPattern/aNew Text' SomeFile.txt

Inserta New Text una línea debajo de cada línea que contiene SearchPattern .

Para agregar dos líneas , puede usar un \ e ingresar una nueva línea mientras escribe New Text .

POSIX sed requiere una \ y una nueva línea después de la función a sed. [1] Especificar el texto para agregar sin la nueva línea es una extensión de GNU sed (como se documenta en la página de información sed ), por lo que su uso no es tan portátil.

[1] https://unix.stackexchange.com/questions/52131/sed-on-osx-insert-at-a-certain-line/

Inserta un nuevo verso después del versículo dado en tu estrofa:

 sed -i '/^Hello My love, you're dirty girl$/ s:$:\nI know, I am, my sexy knight:' FILE 

Más portátil para usar ed; algunos sistemas no son compatibles \ n en sed

 printf "/^Hello My love, you're dirty girl/a\nI know, I am, my sexy knight\n.\nw\nq\n" |\ /bin/ed $filename