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

1
Basicamente, eu estou querendo automatizar adicionando algo ao xorg.conf no lugar certo, eu usei alguns comandos para obter o número de linha da linha que eu quero manipular, mas eu não tenho certeza como vá passando este número de linha (como um argumento e NÃO algo para ser manipulado) para sed. Fui informado sobre xargs e olhei para os documentos sobre ele, mas depois de algumas leituras e experimentações, parece que não consigo fazê-lo funcionar.

Caso alguém consiga pensar em um método melhor, o processo que quero automatizar é encontrar a linha que contém "Identifier" e "Monitor0" (haverá apenas uma) e adicionar uma linha abaixo dela. O problema de apenas encontrar o Monitor0 e manipular essa linha é que existem várias linhas com o Monitor0.

Eu cheguei até aqui:

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

Isso mostra o número da linha que estou querendo passar para o sed, mas não tenho certeza de como fazer isso.

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

    
por Matthieu Cartier 21.12.2010 / 12:52

2 respostas

0

Ordenado (obrigado #cogs no SynIRC), a solução para este problema em particular é a seguinte:

sed '/\bIdentifier\b.*\bMonitor0\b/ a\tOption "NoDDC"'
    
por 21.12.2010 / 14:00
0

Eu posso pensar em um framework para fazer isso em um script perl, mas eu não tenho que ter experiência com sed então você teria que tomar o núcleo dos detalhes.

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 ...");) Então execute sed assim: sed s/$line/$line.'\n'.$linetoadd/ <$oldfile >$newfile .

    
por 21.12.2010 / 13:13

Tags