Usando tee para acrescentar string a um arquivo e também usá-lo como substituto para um padrão em outro arquivo

1

Eu tenho o seguinte código:

cat file | grep example | sed 's/http/https/' >> report.txt

Saída desse comando:

https://example.com/page/index.html

Isso adicionará um link, com HTTPS, ao arquivo. Gostaria, no entanto, para que a mesma saída também substitua "URL" em um segundo arquivo.

Conteúdo do segundo arquivo:

TEXT TEXT
TEXT

URL

TEXT TEXT

Alteração desejada no segundo arquivo:

TEXT TEXT
TEXT

https://example.com/page/index.html

TEXT TEXT

Isso é possível?

P.S .: Não consigo repetir o comando novamente, já que na verdade não é um simples gato, mas um processo de upload que inicia o comando.

    
por t988GF 07.04.2017 / 15:56

3 respostas

1

Para o registro, você não precisa de cat e grep , pois sed sozinho pode fazer isso:

sed '/URL/!d;s/http/&s/'

De qualquer forma, supondo que você execute uma cadeia de comandos que produz uma única linha de saída que você pode fazer:

... | tee -a report.txt | sed 's|[\&/]|\&|g;s|.*|s/URL/&/g|' | sed -f- -i infile.json

Isso anexa a saída a report.txt , mas também a canaliza para sed , o que a transforma em um comando sed , que é canalizado para outro sed , que editará o arquivo .json no local. / p>     

por 07.04.2017 / 18:46
0

Esta é a resposta curta para uma pergunta curta:

cat file | grep URL | sed 's/http/https/' | tee -a report.txt | while read $LINE; do
    sed --in-place -e "s·URL·$LINE·" thejsonfile.json
done

Certifique-se de substituir todos os três · no script sed por algum caractere não contido em $LINE ou deixe-o como · (ponto intermediário).

EDIT: Acabei de aprender com uma pergunta diferente, que canalizar um loop while read é considerado uma prática ruim, devido ao desempenho e a outros motivos. Vai fazer o seu trabalho, então deixo isso aqui.

    
por 07.04.2017 / 17:34
0
sed -n '/example/s/http/&s/p' file | tee -a report.txt |\
sed -e 'G;s/$/./;G;s/$/wq/;h;s|.*|/URL/c|;G' | ed -s - json_file

Criamos um código ed com base na primeira saída e usamos isso para editar o arquivo json.

    
por 07.04.2017 / 22:20

Tags