1 votes

Passage de la sortie de la dernière commande à sed comme argument

En gros, je veux automatiser l'ajout de quelque chose à xorg.conf au bon endroit, j'ai utilisé quelques commandes pour obtenir le numéro de ligne de la ligne que je veux manipuler, mais je ne suis pas vraiment sûr de savoir comment faire pour passer ce numéro de ligne (comme un argument et NON quelque chose à manipuler) à sed. On m'a parlé de xargs et j'ai regardé la documentation à son sujet, mais après quelques lectures et expérimentations, je n'arrive pas à le faire fonctionner.

Au cas où quelqu'un trouverait une meilleure méthode, le processus que je veux automatiser consiste simplement à trouver la ligne contenant à la fois "Identifier" et "Monitor0" (il n'y en aura qu'une) et à ajouter une ligne en dessous. Le problème de trouver simplement Monitor0 et de manipuler cette ligne est qu'il y a multiple lignes avec Monitor0 dans.

Je suis arrivé jusqu'ici :

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

Cela donne le numéro de ligne que je veux passer à sed, mais je ne suis pas vraiment sûr de la façon de le faire.

...ou existe-t-il un moyen plus simple que je ne vois pas ?

0voto

Je peux penser à un cadre pour faire cela dans un script en perl, mais je n'ai pas beaucoup d'expérience avec sed donc vous devrez vous occuper des détails.

Ecrivez un perl script qui identifie d'abord la ligne (pas le numéro de ligne) à laquelle vous devez ajouter. (Quelque chose comme : $line = system("fgrep -n ...") ; ) Puis lancez sed comme ceci : sed s/$line/$line.'\n'.$linetoadd/ <$oldfile >$newfile .

0voto

Alex P Points 121

Je l'ai résolu (merci #cogs sur SynIRC), la solution pour ce problème particulier est la suivante :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X