आंशिक रूप से आउटपुट कमांडलाइन स्क्रीन को फ़ाइल करने के लिए


4

मैं एक बैकअप समाधान के लिए एक logfile लिख रहा हूँ।

बैकअप समाधान 7-ज़िप अपडेट कमांड है।

मैं लॉग इन करना चाहता हूँ जो यह बैकअप फ़ाइलें। अगर मैं >> log.txt का उपयोग करता हूं तो मुझे इसका परिणाम मिलेगा, लेकिन बहुत सारी अन्य जानकारी जो 7-ज़िप आउटपुट के लिए है जो मुझे नहीं चाहिए।

मैं स्क्रीन पर आंशिक रूप से लॉग इन करने का तरीका ढूंढ रहा हूं। मुझे 7z ....> templog.txt का उपयोग करने में कोई आपत्ति नहीं है और फिर इसे log.txt में अप्लाई करने से पहले templog.txt पर कुछ करना है। लेकिन मैं नहीं जानता कि कैसे कमांड लाइन से templog.txt से लाइनों को चुनिंदा रूप से निकालना है।

इसलिए मुझे लगता है कि मेरा सवाल उबल रहा है: मैं templog.txt से पहली 10 पंक्तियों को कैसे हटा सकता हूं या वैकल्पिक रूप से आउटपुट के केवल पुनर्निर्देशित हिस्से को स्क्रीन पर लॉगफाइल कर सकता हूं?

बोनस प्रश्न: अस्थायी रूप से templog.txt या आउटपुट रीडायरेक्शन से लाइनें कैसे हटाएं जो शुरुआत में नहीं हैं?

जवाबों:


2

मैं templog.txt से पहली 10 पंक्तियों को कैसे हटा सकता हूं या वैकल्पिक रूप से आउटपुट का केवल रीडायरेक्ट भाग स्क्रीन पर लॉगफ़ाइल में कर सकता हूं?

नीचे एक जोड़े को अलग अलग तरीकों से पूरा करने के लिए आप के लिए क्या पूछना हैं विशेष स्ट्रिंग के साथ लाइनों को छोड़ते हुए उनके साथ में findstr वरना सिर्फ करने के लिए विशिष्ट लाइन नंबर हटाने के साथ एसईडी templog.txt से पहले इसे संलग्न कर देता है क्या log.txt से भरा लॉग फ़ाइल के लिए क्या है ।


FINDSTR का उपयोग करना

यह उन डबल-कोट्स में स्ट्रिंग्स को छोड़ देगा, जो templog.txt में हैं। इसे log.txt में जोड़ा जा रहा है

FINDSTR /V /I "string1 string2 string3 string4" templog.log>>log.txt

यह प्रत्येक /C:स्विच के बाद डबल-कोट्स में रेग्युलर एक्सप्रेशंस को छोड़ देगा जो कि टेम्पलॉगटैक्स में हैं। इसे लॉग इन के लिए जोड़ा जा रहा है। इसलिए आपको बस प्रत्येक रेग्युलर एक्सप्रेशन का पता होना चाहिए, जिसे आपको ऑउटिंग के लिए मैच करना होगा।

FINDSTR /V /R /C:"<regex1>" /C:"<regex2>" /C:"<regex3>" templog.log>>log.txt

SED का उपयोग करना

यह templog.txt से लाइनों को 1 - 10 हटा देगा और फिर उसके बाद ऑपरेशन बाकी को log.txt में जोड़ देगा

sed -i -e "1,10d" templog.txt

आगे के संसाधन


मैंने फाइंडस्ट में देखा, लेकिन यह दिया कि यह वास्तविक तारों के बजाय शब्दों की खोज करता है या मुझे रेग्जेस का उपयोग करना है, ऐसा लगता है कि यह मेरी आवश्यकताओं के अनुरूप नहीं है। हालांकि SED का उपयोग करता है। मैं एक उचित समाधान देखना पसंद करूंगा, हालांकि इसके लिए किसी अतिरिक्त सॉफ्टवेयर की आवश्यकता नहीं है। यह उत्तर निश्चित रूप से एक +1 का हकदार है, इसलिए इसे दिया गया है। मैं यह देखने के लिए कुछ और दिन इंतजार करने जा रहा हूं कि क्या इसे स्वीकार करने से पहले अधिक जवाब दिए गए हैं।
14

रेगेक्स एक निश्चित रूप से अधिक दिलचस्प है। क्या यह पूरी फ़ाइल की सामग्री पर फिर से जुड़ सकता है, पिछले समय में भी? इसलिए अगर मुझे एक स्ट्रिंग मिल जाए, तो वहां से सभी तरह से हटा दें जब तक मुझे एक और स्ट्रिंग नहीं मिलती है जो उदाहरण के लिए 8 लाइनें नीचे है?
LPChip

@LPChip findstrलाइन ब्रेक के पार खोज सकती है। देखें ss64.com/nt/findstr-linebreaks.html
DavidPostill

2
@LPChip Windows FINDSTR कमांड के अनकम्प्रेस्ड फीचर्स और सीमाएँ क्या हैं? द्वारा dbenham (हमारे निवासी बैच फ़ाइल गुरु) पढ़ने लायक है ...
DavidPostill

विंडोज Windows.१ या १०, और टेंपइल का आउटपुट संभवत: २० से ३० लाइन बड़ा होगा, लेकिन चरम मामलों में कहें, फ़ाइल अभी भी १ एमबी के नीचे है। खैर खोज की सीमा के भीतर। अधिक से अधिक खोज में गोता लगाते हुए, ऐसा लगता है कि मैं अपने लक्ष्य को तेज करने के लिए अन्य फ़ाइल विकल्प के खिलाफ मैच का उपयोग करने में सक्षम हो सकता हूं।
LPChip

1

PowerShell - किसी फ़ाइल से विशिष्ट लाइनें निकालें

आप नीचे दिए गए PowerShell आदेशों का उपयोग templog.txt फ़ाइल की सामग्री में सेलेक्ट-ऑब्जेक्ट के-Skip साथ पैरामीटर का उपयोग करके पहले पांच लाइनों को छोड़ने के लिए कर सकते हैं , और फिर इसे छोड़ दिया करने के लिए छोड़ दी गई उन फ़ाइल लाइनों को छोड़कर सब कुछ के साथ अद्यतन करें।

(Get-Content "C:\path\templog.txt" | Select-Object -Skip 5) | Set-Content "C:\path\templog.txt"

आप Templog.txt की पहली पाँच लाइनों को छोड़ने के लिए Select-Object के-Skip साथ पैरामीटर का उपयोग करके नीचे दिए गए PowerShell कमांड का उपयोग कर सकते हैं , और फिर लॉग इन करने के लिए सभी पंक्तियों को जोड़ सकते हैं।

(Get-Content "C:\path\templog.txt" | Select-Object -Skip 5) | Add-Content "C:\path\log.txt"

आगे के संसाधन


अच्छा विचार है, लेकिन दुर्भाग्य से मैं जो चाहता हूं, वह व्यावहारिक नहीं है। हालांकि बॉक्स के बाहर सोचने के लिए +1। :)
LPChip
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.