Sed正規表現をfile.txtとして印刷します。

Sed正規表現をfile.txtとして印刷します。

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 "}"

おすすめ記事