Труба в FIFO из скрипта

Вместо этого вы можете использовать awk . Это намного более гибко.

Например. для эмуляции grep -c вы можете использовать:

awk '/Thenis/{total+=1}END{print "Thenis: ",total}'

Однако обратите внимание, что в этом случае (это также относится к grep ) учитываются только строки со словом Thenis. Это не счет слова Thenis. Если вам нужно подсчитать количество слов Thenis в файле, вы можете использовать следующую конструкцию awk :

awk '/Thenis/{total+=gsub("Thenis","")}END{print "Thenis: ",total}

или способ с переменными (для ввода Тогда только один раз)

awk -v word="Thenis" '$0 ~ word{total+=gsub(word,"")}END{print word,": ",total}
0
22.10.2018, 13:55
1 ответ

Причина, по которой оператор канала |не работает, заключается в том, что оператор канала ожидает другую команду. Оператор перенаправления вывода >выводит данные в файл, а именованный канал — это файл в общем смысле, а не обычный файл.

Вывод в канал обычно буферизуется, вы можете сбросить поток вывода или изменить буферизацию стандартного вывода.

В вашем случае самым элегантным решением было бы открыть именованный канал в Python, написать строку («ответ» или «пока» ), а затем закрыть файл/канал. Таким образом, вы отделили серверный процесс от клиента Python. Вы даже можете перезапустить серверный процесс(twinkle -c)и оставить процесс Python запущенным.

1
28.01.2020, 02:41

Теги

Похожие вопросы