Passando a saída do último comando para sed como argumento

Passando a saída do último comando para sed como argumento

Basicamente, estou querendo automatizar a adição de algo ao xorg.conf no lugar certo, usei alguns comandos para obter o número da linha que desejo manipular, mas não tenho certeza de como proceder para passar este número de linha (como um argumento e NÃO algo a ser manipulado) para sed. Disseram-me sobre xargs e li a documentação sobre ele, mas depois de algumas leituras e experiências, não consigo fazê-lo funcionar.

Caso alguém consiga pensar em um método totalmente melhor, o processo que desejo automatizar é apenas encontrar a linha que contém "Identifier" e "Monitor0" (haverá apenas um) e adicionar uma linha abaixo dela. O problema de apenas encontrar o Monitor0 e manipular essa linha é que existemmúltiplolinhas com Monitor0 in.

Eu cheguei até aqui:

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

Isso fornece o número da linha que desejo passar para o sed, mas não tenho certeza de como fazê-lo.

...ou existe uma maneira mais simples que não estou vendo?

Responder1

Posso pensar em uma estrutura para fazer isso em um script perl, mas não tenho experiência com sed, então você teria que considerar os detalhes básicos.

Escreva um script Perl que primeiro identifique a linha (não o número da linha) na qual você deve anexar. (Algo como: $line = system("fgrep -n ..."); ) Em seguida, execute o sed assim: sed s/$line/$line.'\n'.$linetoadd/ <$oldfile >$newfile.

Responder2

Classificada (obrigado #cogs no SynIRC), a solução para este problema específico é a seguinte:

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

informação relacionada