2012-03-13 10 views
57

मुझे विंडोज़ पर लॉग फ़ाइल देखने के लिए इन आदेशों की आवश्यकता है, लेकिन मैं कोई प्रोग्राम इंस्टॉल नहीं करता हूं, और मुझे विंडोज़ के साथ पावरहेल पसंद है।पावरहेल में क्या सिर, पूंछ, अधिक, कम, sed करते हैं?

+0

लॉग फ़ाइल बहुत बड़ी है, लगभग कई एमबीइट्स। Notepad.exe द्वारा देखना बहुत मुश्किल है। –

+0

यदि आप अपने आधार के रूप में 'नोटपैड' का उपयोग कर रहे हैं तो मैं वैकल्पिक पाठ संपादकों को देखने का सुझाव दूंगा, वहां बहुत सारे (मुफ्त और भुगतान दोनों) विकल्प हैं। सभी नोटपैड से बेहतर हैं (हालांकि यह एक चुनौती का अधिक नहीं है)। – Richard

+0

[पावरशेल बनाम यूनिक्स शैल] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/573623/powershell-vs-unix-shells) – manojlds

उत्तर

90

Get-Content (उपनाम: gc) टेक्स्ट फ़ाइल पढ़ने के लिए आपका सामान्य विकल्प है। इसके बाद आप आगे फ़िल्टर कर सकते हैं:

gc log.txt | select -first 10 # head 
gc -TotalCount 10 log.txt  # also head 
gc log.txt | select -last 10 # tail 
gc -Tail 10 log.txt   # also tail (since PSv3), also much faster than above option 
gc log.txt | more    # or less if you have it installed 
gc log.txt | %{ $_ -replace '\d+', '($0)' }   # sed 

यह छोटी फ़ाइलों के लिए काफी अच्छा काम करता है, बड़े (कुछ एमआईबी से अधिक) शायद थोड़ा धीमे होते हैं।

PowerShell Community Extensions में विशेष फ़ाइल सामग्री (जैसे गेट-फाइलटेल) के लिए कुछ cmdlets शामिल हैं।

+0

धन्यवाद, मेरे लिए बहुत मददगार। –

+1

पवित्र गाय, यह मेरे सीपीयू को 1 जीबी सीएसवी पर '-last 2' करने के लिए अधिकतम कर रहा है। गर्म पेय: ☕ – mlissner

+6

@mlissner: यदि आप PowerShell v3 पर हैं तो आप इसके बजाय 'Get-Content -Tail 2' का उपयोग कर सकते हैं। यह निश्चित रूप से तेज़ है। – Joey

6

more.exe विंडोज पर मौजूद है, less के बंदरगाह आसानी से पाए जाते हैं (और PowerShell Community Extensions, पीएससीएक्स, में एक शामिल है)।

पावरशेल वास्तव में या तो अलग कार्यक्रमों के लिए कोई विकल्प प्रदान नहीं करता है, लेकिन संरचित डेटा Out-Grid सहायक हो सकता है।

Head और Tail दोनों Select-Object क्रमशः -First और -Last पैरामीटर का उपयोग कर के साथ नकल करते जा सकता है।

Sed फ़ंक्शंस सभी उपलब्ध हैं लेकिन संरचित रूप से अलग-अलग हैं। फ़िल्टरिंग विकल्प Where-Object (या Foreach-Object और श्रेणियों के लिए कुछ राज्य) में उपलब्ध हैं। अन्य, परिवर्तन, संचालन Select-Object और Foreach-Object के साथ किया जा सकता है।

हालांकि PowerShell (.NET) ऑब्जेक्ट्स पास करता है - उनके सभी टाइप की गई संरचना के साथ, उदाहरण के लिए। तिथियां DateTime उदाहरण हैं - केवल स्ट्रिंग्स की बजाय, जिन्हें प्रत्येक कमांड को खुद को पार्स करने की आवश्यकता होती है, sed और ऐसे अन्य प्रोग्राम अनावश्यक हैं।

1

यदि आपको विंडोज़ पर बड़ी (या छोटी) लॉग फाइलों की जांच करने की आवश्यकता है, तो मुझे सबसे अच्छा टूल माइक्रोसॉफ्ट के मुफ़्त Log Parser 2.2 मिला है। यदि आप चाहें तो आप इसे PowerShell से कॉल कर सकते हैं और यह आपके लिए भारी भारोत्तोलन करेगा, और बहुत तेज़ भी होगा।

+0

वैसे भी धन्यवाद, मेरा पर्यावरण Win2k8R2 है जो लॉग पार्सर 2.2 –

0

मैं कुछ बेहतर समाधान मिल गया: निर्मित तरीके head और tail करने के लिए

gc log.txt -ReadCount 5 | %{$_;throw "pipeline end!"} # head 
gc log.txt | %{$num=0;}{$num++;"$num $_"}    # cat -n 
gc log.txt | %{$num=0;}{$num++; if($num -gt 2 -and $num -lt 7){"$num $_"}} # sed 
15

यहाँ कर रहे हैं। पाइप का उपयोग न करें क्योंकि यदि आपके पास बड़ी फाइल है, तो यह बहुत धीमी होगी। इन अंतर्निर्मित विकल्पों का उपयोग करना बड़ी फ़ाइलों के लिए भी तेज होगा।

gc log.txt -head 10 
gc log.txt -tail 10 
gc log.txt -tail 10 -wait # equivalent to tail -f 
+0

की सिस्टम आवश्यकताओं में नहीं है लेकिन [जॉय की टिप्पणी] (https://stackoverflow.com/questions/9682024/how-to-do-what-head-tail- अधिक-कम-sed-do-in-powerhell # comment60271566_9682594) सटीक विपरीत इंगित करता है! मुझे कैसे पता चलेगा कि किस पर भरोसा करना है या कौन सा (अंतर्निहित) विधि सबसे कुशल है? –

+1

@ एनएच मेरा जवाब जॉय की टिप्पणी के साथ समझौता है। उनकी टिप्पणी कहती है "- कम धीमा है ... यही कारण है कि सामग्री प्राप्त करें- पूंछ मौजूद है।" '| select -last' पाइप का उपयोग करता है। मैं पाइप के बिना '-टेल 'का उपयोग कर रहा हूँ। लेकिन अगर आपको कभी भी दो विरोधाभासी उत्तर मिलते हैं, तो आप शायद उस व्यक्ति पर भरोसा कर सकते हैं जिसकी बहुत प्रतिष्ठा है। इसके अलावा, आप बस एक बड़ी फ़ाइल पर दो तरीकों का प्रयास कर सकते हैं। यह एक बड़ी फाइल पर बहुत स्पष्ट होगा। – wisbucky

+0

समझ गया। क्षमा करें, मुझे पहली बार पोस्ट पढ़ने पर उलझन में होना चाहिए था। –

संबंधित मुद्दे