Pasar la salida del último comando a sed como argumento

Pasar la salida del último comando a sed como argumento

Básicamente, quiero automatizar la adición de algo a xorg.conf en el lugar correcto. He usado algunos comandos para obtener el número de línea de la línea que quiero manipular, pero no estoy muy seguro de cómo pasar este número de línea (como argumento y NO como algo que pueda manipularse) para sed. Me hablaron sobre xargs y miré los documentos al respecto, pero después de leer y experimentar un poco, parece que no puedo hacerlo funcionar.

En caso de que alguien pueda pensar en un método completamente mejor, el proceso que quiero automatizar es simplemente encontrar la línea que contiene tanto "Identificador" como "Monitor0" (solo habrá uno) y agregar una línea debajo. El problema de simplemente encontrar Monitor0 y manipular esa línea es que haymúltiplelíneas con Monitor0 en.

Llegué hasta aquí:

fgrep -n "Monitor0" </etc/X11/xorg.conf | fgrep "Identifier" | cut -f1 -d:

Esto proporciona el número de línea que quiero pasar a sed, pero no estoy muy seguro de cómo hacerlo.

... ¿o hay una forma más sencilla que no veo?

Respuesta1

Puedo pensar en un marco para hacer esto en un script de Perl, pero no tengo experiencia con sed, por lo que tendrías que ocuparte de los detalles.

Escriba un script en Perl que primero identifique la línea (no el número de línea) a la que debe agregar. (Algo como: $line = system("fgrep -n ..."); ) Luego ejecuta sed así: sed s/$line/$line.'\n'.$linetoadd/ <$oldfile >$newfile.

Respuesta2

Lo ordené (gracias #cogs en SynIRC), la solución para este problema en particular es la siguiente:

sed '/\bIdentifier\b.*\bMonitor0\b/ a\\tOption "NoDDC"'

información relacionada