2011-07-01 ... /home/todd/logs/server_log_1.log ...
2011-07-02 ... /home/todd/logs/server_log_2.log ...
2011-07-03 ... /home/todd/logs/server_log_3.log ...
मेरे पास एक फ़ाइल उपरोक्त की तरह दिखती है।sed/awk: टेक्स्ट स्ट्रीम से पैटर्न निकालें
server_log_1.log
server_log_2.log
server_log_3.log
किसी की मदद कर सके: मैं के रूप में STDOUT करने के लिए इसे और उत्पादन से फ़ाइल नाम निकालने के लिए करना चाहते हैं? धन्यवाद!
फ़ाइल नाम पैटर्न server_log_xxx.log है, और यह केवल एक पंक्ति में होता है।
के बाद से फ़ाइल नाम तो बस किसी भी चरित्र के बारे में शामिल कर सकते हैं (रिक्त स्थान, नई-पंक्तियों, नियंत्रण वर्ण, सबसे यूनिक्स फ़ाइल सिस्टम पर, 'के अलावा कुछ '\ 0'' और''/''), वे 3 लाइनें एक वैध फ़ाइल नाम हो सकती हैं। फ़ाइल नामों को विश्वसनीय रूप से पहचानने का कोई तरीका नहीं है जबतक कि आप वैध फ़ाइल नामों और उन चीज़ों में कुछ प्रतिबंध जोड़ते हैं जो दो '...' में दिखाई दे सकते हैं। आप विशेष रूप से सावधान रहना चाहते हैं क्योंकि लॉगफाइल जो असुरक्षित उपयोगकर्ता-नियंत्रित चर (उदा। इनपुट, होस्टनाम) रिकॉर्ड करते हैं, खराब लिखित पार्सर्स के खिलाफ इंजेक्शन हमलों के लिए लक्ष्य हो सकते हैं। – jw013
jw013: नहीं, आपको फ़ाइल नाम में '' \ n'' की आवश्यकता है, अन्यथा उन 3 लाइनें तीन प्रविष्टियां हैं –
@yi ''n \' 'फाइलनामों में एक वैध वर्ण है। आप वास्तव में "सभी संभावित फ़ाइल नामों" पर किसी भी सेन मिलान नहीं कर सकते हैं, और एक उदाहरण के रूप में मैंने बताया कि पूरी लाइन या लाइनों के किसी भी संयोजन (फ़ाइल सिस्टम की फ़ाइल नाम सीमा सीमा तक) एक वैध फ़ाइल नाम है। अब जब टोड ने उस पैटर्न को निर्दिष्ट किया है जिसे वह ढूंढ रहा है, तो समस्या अधिक उचित हो जाती है (हालांकि 'xx' भाग अभी भी निर्दिष्ट नहीं है, शायद वे अंकों के लिए खड़े होने के लिए हैं)। मैं वास्तव में आप जो कह रहा हूं उसका पालन नहीं करता "नोप"। – jw013