netcat出力をgrepする方法

netcat出力をgrepする方法

からライブテキストストリームを取得しようとしてもnetcat機能しません。

netcat localhost 9090 | grep sender

何も返されませんが、必ず返さなければならないと確信しています。

netcat出力をファイルにリダイレクトし、実際の環境をシミュレートするために少しの遅延を追加すると機能します。

$ (sleep 5; cat netcat_output; sleep 5) | grep sender

{"jsonrpc":"2.0","method":"GUI.OnScreensaverDeactivated","params":{"data": "shuttingdown":false},"sender":"xbmc"}}

私も--line-buffered成功せずに追加しようとしました。

私は何が間違っていましたか?

編集する:

私は同じ問題を見つけましたsed。出力が空です。

ただし、たとえば、hexdumpテキストを16進数に変換する場合は、次のようになります。

$ netcat localhost 9090 | hexdump -C
00000000  7b 22 6a 73 6f 6e 72 70  63 22 3a 22 32 2e 30 22  |{"jsonrpc":"2.0"|
00000010  2c 22 6d 65 74 68 6f 64  22 3a 22 50 6c 61 79 65  |,"method":"Playe|
00000020  72 2e 4f 6e 50 6c 61 79  22 2c 22 70 61 72 61 6d  |r.OnPlay","param|
00000030  73 22 3a 7b 22 64 61 74  61 22 3a 7b 22 69 74 65  |s":{"data":{"ite|
00000040  6d 22 3a 7b 22 69 64 22  3a 36 2c 22 74 79 70 65  |m":{"id":6,"type|
00000050  22 3a 22 6d 6f 76 69 65  22 7d 2c 22 70 6c 61 79  |":"movie"},"play|
00000060  65 72 22 3a 7b 22 70 6c  61 79 65 72 69 64 22 3a  |er":{"playerid":|
00000070  31 2c 22 73 70 65 65 64  22 3a 31 7d 7d 2c 22 73  |1,"speed":1}},"s|

ベストアンサー1

答えはここにあります: grepはnc出力で一致しません

netcatは詳細なログを標準エラーとして出力するため、grepにパイプする前にエラーをキャッチする必要があります。

$ netcat -zv localhost 1-9000 2>&1 | grep succeeded

おすすめ記事