MQTTストリームに接続し、次のように入力してデータをフィルタリングしました。
mosquitto_sub -d -t +/# 2>&1 |
sed -n "/PUBLISH/{s|.*\('.*',\).*|\1$(date),|;N;s/\n//;p}"
Ubuntu端末を入力してください。これは私が興味を持っているMQTTストリームの唯一のコンテンツを印刷します。
これでこれができるので、この情報をファイルにダンプしたいと思いますqwerty.TXT
。頑張った
mosquitto_sub -d -t +/# 2>&1 |
sed -n "/PUBLISH/{s|.*\('.*',\).*|\1$(date),|;N;s/\n//;w qwerty.txt}"
次のエラーが発生しました。
sed: -e expression #1, char 0: unmatched '{'
私はsed regexを調べましたが、その例は次のようなw file.type
ファイルにタイプを書き込むことです。file.type
.txt
私も試しました
mosquitto_sub -d -t +/# 2>&1 |
sed -n "/PUBLISH/{s|.*\('.*',\).*|\1$(date),|;N;s/\n//;p >> qwerty.txt}"
そして
mosquitto_sub -d -t +/# 2>&1 |
sed -n "/PUBLISH/{s|.*\('.*',\).*|\1$(date),|;N;s/\n//;1a qwerty.txt}"
フィルタリングされたMQTTストリームをファイルに印刷する方法はqwerty.txt
?
答え1
w
でコマンドを終了するには、行末sed
または文字列の終わりが必要です。
コマンドにリテラルの改行を含めるかsed
(対話式の使用には非常に不便です)、複数の-e
コマンドを使用できます。
だから代わりに:
sed -n "/PUBLISH/{s|.*\('.*',\).*|\1$(date),|;N;s/\n//;w qwerty.txt}"
以下を使用します。
sed -n -e "/PUBLISH/{s|.*\('.*',\).*|\1$(date),|;N;s/\n//;w qwerty.txt" -e "}"