netcat -k -l 10080 | grep --line-buffered "GET /" \
| cut -b6- | sed "s/HTTP.*//"
Он работает нормально, если я передаю ему файл журнала, но когда я даю реальную информацию, он не выводится. Итак, я попытался добавить -u для установки, но это все равно не сработало.
Если кормить:
GET /test message :) HTTP/1.1
Host: 127.0.0.1
Accept-Encoding: identity
Connection: close
Content-type: application/x-www-form-urlencoded
Accept: text/plain
Должно быть выведено: test message :)
При отправке через cat все работает нормально. Но когда он получит настоящую информацию от netcat, это не сработает.
заранее спасибо





Это фрагмент, который буферизует вывод netcat. Так что sed этого не понимает.
Я предлагаю заменить сокращение на вторую замену следующим образом.
$ netcat -k -l 10080 | grep --line-buffered GET | sed -e "s/GET //" -e "s/ HTTP.*//"
Вы можете использовать stdbuf, чтобы изменить режим буферизации потоков команды (в данном случае стандартный вывод)
stdbuf -o0 netcat -k -l 10000 | sed 's/HTTP.*//'
Почему бы просто не
netcat -k -l 10080 | sed -nu 's%^GET /\(.*\) HTTP/.*%\1%p'?