Sed regex imprimindo em um arquivo.txt

1

Estou conectado a um fluxo MQTT e eu filtro os dados inserindo:

mosquitto_sub -d -t +/# 2>&1 |
sed -n "/PUBLISH/{s|.*\('.*',\).*|$(date),|;N;s/\n//;p}"

no terminal do Ubuntu. Isso imprime as únicas coisas que estou interessado no fluxo do MQTT.

Agora que posso fazer isso, gostaria de despejar essas informações em um arquivo qwerty.TXT . Eu tentei

mosquitto_sub -d -t +/# 2>&1 |
sed -n "/PUBLISH/{s|.*\('.*',\).*|$(date),|;N;s/\n//;w qwerty.txt}"

e recebi o seguinte erro:

sed: -e expression #1, char 0: unmatched '{'

Eu olhei no sed regex, e os exemplos são que w file.type grava no arquivo file.type onde tipo pode ser .txt por exemplo.

Eu também tentei

mosquitto_sub -d -t +/# 2>&1 |
sed -n "/PUBLISH/{s|.*\('.*',\).*|$(date),|;N;s/\n//;p >> qwerty.txt}"

e

mosquitto_sub -d -t +/# 2>&1 |
sed -n "/PUBLISH/{s|.*\('.*',\).*|$(date),|;N;s/\n//;1a qwerty.txt}"

Como posso imprimir meu fluxo MQTT filtrado em um arquivo chamado qwerty.txt ?

    
por 3kstc 28.02.2015 / 03:10

1 resposta

1

Para finalizar o comando w em sed , você precisa de um fim de linha ou um fim de string.

Você pode incorporar uma nova linha literal no seu comando sed (o que é irritante para uso interativo) ou você pode usar vários comandos -e .

Então, em vez de:

sed -n "/PUBLISH/{s|.*\('.*',\).*|$(date),|;N;s/\n//;w qwerty.txt}"

Você usaria:

sed -n -e "/PUBLISH/{s|.*\('.*',\).*|$(date),|;N;s/\n//;w qwerty.txt" -e "}"
    
por 15.04.2016 / 21:10