bash - echo imprime no terminal

0

Eu não sou tão avançado no script bash, então eu suspeito que pode ser algo muito simples. Fiz um script para executar uma URL com curl , em seguida, analisei a saída usando grep para alguns IDs antes de anexá-la a um arquivo de texto. Ao anexá-lo a um arquivo de texto, os IDs são delimitados por espaço, então tentei substituir os espaços por novas linhas como esta:

#!/bin/bash

IDS=$(curl -v --silent "http://example.com" 2>&1 | grep -Eo 'data-user_id="[0-9]+"' | grep -Eo "[0-9]+")

echo ${IDS} >> "ids"
sed 's/ /\n/g' "ids"

Mas quando eu executo isso, vejo a saída do meu arquivo sendo gravada no terminal, se eu remover a última linha ( sed ), a saída desaparece. Antes eu tinha usado tr e a mesma coisa aconteceu. Como posso impedir que isso aconteça?

    
por Nubcake 25.02.2017 / 23:25

2 respostas

0

sed está imprimindo o arquivo com a substituição que você disse para fazer.

Acho que uma ideia melhor pode ser a seguinte:

#!/bin/bash

IDS=$(curl -v --silent "http://example.com" 2>&1 | grep -Eo 'data-user_id="[0-9]+"' | grep -Eo "[0-9]+")

echo "$IDS" | tr ' ' '\n' >> "ids"

Isso irá ecoar $IDS e aplicar o espaço à nova tradução de linha antes de anexar ao arquivo.

    
por 25.02.2017 / 23:41
0

Experimente com perl

IDS=$(curl -sv http://example.com |& perl -lne 'print $1 if /data-user_id="(\d+)"/')
    
por 26.02.2017 / 12:57

Tags