शुरू से ही एक द्विआधारी फ़ाइल का पालन कैसे करें (एक ला "पूंछ-एफ")?


10

क्या बाइनरी फ़ाइल को शुरू से ही पालन करना संभव है, एक ला tail -f?

यह कुछ मामलों में उपयोगी है, उदाहरण के लिए यदि मैं scpकिसी दूरस्थ सर्वर पर एक फ़ाइल भेज रहा हूं , और उसी समय मैं इसे किसी अन्य प्रक्रिया में फीड करना चाहता हूं (हां, मुझे पता है कि मैं ssh+ catट्रिक्स का उपयोग कर सकता हूं )।

जहाँ तक मैं एफएम से पढ़ता हूँ, tailको ध्यान में रखते हुए पाठ फ़ाइलें लिखी जाती हैं।

क्या मानक पॉज़िक्स टूल का उपयोग करके इस तरह के ऑपरेशन करने का कोई सरल तरीका है?


यह कहां कहता है कि tailइसका उपयोग केवल पाठ फ़ाइलों के साथ किया जा सकता है?
rozcietrzewiacz

@rozcietrzewiacz पुराने यूनियनों पर, टेक्स्ट-ओरिएंटेड यूटिलिटीज जैसे कि tailहमेशा बाइनरी फ़ाइलों का सामना नहीं करते थे: वे इनपुट फाइलों में अंतिम नईलाइन के बाद नल बाइट्स या स्टाइट बाइट्स को छोड़ सकते हैं। आधुनिक प्रणाली सामना करती है।
गिल्स एसओ- बुराई को रोकें '

जवाबों:


12

tailद्विआधारी डेटा के साथ ही पाठ के साथ काम करता है। यदि आप फ़ाइल की शुरुआत में शुरू करना चाहते हैं, तो आप उपयोग कर सकते हैं tail -c +1 -f


क्या यह किसी के लिए काम नहीं कर रहा है? मेरे पास एक बाइनरी फ़ाइल है जिसमें एक स्ट्रिंग की 16 घटनाएं हैं जो मैं देखता हूं कि मैं कब उपयोग करता हूं cat bin_file | strings - -o | grep match_string, लेकिन जब मैं करता tail -c +1 -f bin_file | strings - -o | grep match_stringहूं, तो मुझे 9 वें मैच से पहले कुछ भी नहीं मिलता है। मैंने यह भी नोट किया कि -oकैट आउटपुट की तुलना में लाइन नंबर सभी 1 कम हैं। अगर मैं grep को छोड़ देता हूं, तो मुझे सभी 16 मैच मिलते हैं (बाकी सब चीज़ों के साथ मिलाया जाता है), इसलिए मुझे लगा कि समस्या grep थी, लेकिन मैंने एक पर्ल-लाइनर की कोशिश की और यह उसी स्थान पर रुक गया ...
hepcat72
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.