Печать регулярного выражения Sed в файл .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 ?

Чтобы завершить команду 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 "}"