আমি লাইভ পাঠ্য স্ট্রিমটি গ্রেপ করার চেষ্টা করছি 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
পাঠ্যটিকে হেক্স লাইভে রূপান্তরিত করে:
$ 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|
netcat -z localhost 9090 | grep sender
grep
সম্ভবত কোনও নতুন লাইনের জন্য অবিরাম অপেক্ষা করা হচ্ছে। অন্ততপক্ষে কোনও নিউলাইন না হলে একটি ইওএফ পাবে cat
তাই কাজ করে grep
। আরএস হিসাবে চেষ্টা awk
করতে পারেন {
?
stdbuf -o0 netcat localhost 9090 | grep sender
( এখান থেকে নেওয়া )