उदात्त - विशिष्ट मूल्य वाले सभी लाइनों को हटा दें


116

मेरे पास एक 900mb लॉग फाइल है जिसे मैं SublimeText 3 में खोल सकता हूं। यह फाइल निम्नलिखित के समान लाइनों के साथ फूला हुआ है।

10/08/2014 23:45:31:828,Information,,,,ExportManager: ,No records to send and/or not connected

मैं उन सभी लाइनों को कैसे फ़िल्टर कर सकता हूं जिनमें शामिल हैं No records to send and/or not connected


जबकि नीचे दिए गए समाधान काम करते हैं, इस प्रकार की नौकरी वास्तव में बड़ी फ़ाइलों के लिए sed / awk के साथ की जानी चाहिए।
बार

जवाबों:


229

आप एक नियमित अभिव्यक्ति खोज-और-जगह कर सकते हैं:

खोजें> बदलें पर क्लिक करें।

सुनिश्चित करें कि नियमित अभिव्यक्ति बटन दबाया जाता है।

क्या फ़ील्ड खोजें, के लिए:

^.*No records to send and/or not connected.*\n

फ़ील्ड के साथ बदलें खाली छोड़ दें।

सभी को बदलें पर क्लिक करें


16
अंत में पूर्ण विराम / अवधि महत्वपूर्ण है, इसके बिना, यह काम नहीं करेगा। वैकल्पिक रूप से, आप इसका उपयोग कर सकते हैं:^.*No records to send and/or not connected\S.*$
नवजातत्रोन

यदि आप किसी बड़ी फ़ाइल पर काम कर रहे हैं तो यह समाधान एकमात्र संभव है। जब मेरा Ctrl+Shift+Kचयन 200,000 लाइनों के साथ हुआ तो मेरी मशीन कई मिनटों के लिए अटक गई ।
प्रेज़ेमेक डी

Imma मेरी 26 000 000 लाइनों वाली फ़ाइल के साथ इसे आज़माएं: ')
YB कॉज़

64

उन लोगों के लिए जो रेगेक्स नहीं लिखना चाहते हैं - आप ctrl+cmd+gमेनू से " स्ट्रिंग, सभी खोजें" को हिट या चुन सकते हैं, जो आपको प्रत्येक मिलान स्ट्रिंग के लिए चयन मिलेगा; वहां से Homeहर सिलेक्शन कर्सर को लाइन की शुरुआत में ले shift+Endजाएगा , हर मिलान लाइन का चयन करेगा, और del, delउन सभी को हटा देगा।

एकाधिक कर्सर संपादन मजेदार है!


4
यह एक बहुत ही उपयोगी अधिक सामान्यीकृत टिप है। मेरा उद्देश्य एक स्ट्रिंग वाली सभी लाइनों को हटाना था। मैंने इसका एक उदाहरण चुनना शुरू किया, फिर शॉर्टकट के साथ "क्विकफाइंड" का इस्तेमाल किया Ctrl+Cmd+Gक्योंकि लियोनिद उन सभी तारों को चुनने का सुझाव देता है। इसके बाद मैं सीधे "डिलीट लाइन" पर जा सकता था Ctrl-Shift-Kऔर सर्जिकल रूप से इस स्ट्रिंग के साथ सभी लाइनों को एक पल में हटा दिया गया था। उदात्त पाठ वास्तव में सबसे अच्छा पाठ संपादक है जिसका मैंने कभी उपयोग किया है।
MiB

क्या ctrl + cmd + g विंडोज पर ctrl + alt + g के समान है? मैं यह काम करने के लिए नहीं मिल सका
काले पांडा

खिड़कियों के लिए @black पांडा "क्विक फाइंड ऑल" alt + f3 है - धन्यवाद लियोनिद +1
क्रिस्टोफर

यदि आप मेरे जैसे हैं और आपके पास होम बटन नहीं है, तो आप CMD + <- (बायाँ तीर) का उपयोग भी कर सकते हैं
कोरय तुगे

4
आप लाइन में चयन का विस्तार करने के लिए cmd + L का उपयोग कर सकते हैं।
कोरे तुगे

53

मुझे काम करने के लिए रेगेक्स नहीं मिला, इसलिए मैंने इस उत्तर से Alt-F3 दृष्टिकोण का उपयोग किया:

/superuser/452189/how-can-i-filter-a-file-for-lines-containing-a-string-in-sublime-text-2/598999#598999

  1. ब्याज की स्ट्रिंग का चयन करें
  2. सभी घटनाओं पर मल्टी-कर्सर मोड में जाने के लिए Alt+ F3( मैक ओएस एक्स पर Ctrl+ CMD+ G) हिट करें
  3. हिट Ctrl+ L[टिप्पणियां देखें] ( मैक पर Cmd+ L)
  4. किसी अन्य बफ़र के लिए कॉपी-पेस्ट चयन
  5. Del

2
दो बातें: (1) आप इस तरह के एक व्यक्तिगत जवाब से लिंक कर सकते हैं (2) आपको यहां दूसरे जवाब को संक्षेप में प्रस्तुत करना चाहिए (और इस प्रश्न का उत्तर उपयुक्त होने के लिए विशेषज्ञ दें)।
कॉन्सिफिक कंपाइलर

4
आप चरण 3 और 4 को प्रतिस्थापित कर सकते हैं CTRL + L, जो चयनों को लाइन ब्रेक सहित संपूर्ण लाइनों तक फैलाता है।
चन्नोस

2
मेरे जैसे उन लोगों के लिए जो एक मैक कुंजी योजना से शापित थे: Ctrl+Cmd+Gसभी घटनाओं पर बहु-कर्सर के Cmd+Lलिए, लाइनों का विस्तार करने के लिए, और सामान्य कॉपी / पेस्ट
सिरिल डचोन-डोरिस

27

यह वही है जो मैंने विंडोज़ उपयोगकर्ताओं के लिए पाया है:

  1. स्ट्रिंग का चयन करें (इस स्ट्रिंग वाली प्रत्येक पंक्ति को हटाया जाना है)।
  2. ALT + F3 दबाएं।
  3. Ctrl + L दबाएं।
  4. हटाएँ दबाएं।

21

ऊपर दिए गए सुझाव के किसी भी रेगेक्स कोड ने मेरे मामले में काम नहीं किया, लेकिन इसने काम किया:

.*(text in question).*

यह आपके कोड पर खाली लाइनें छोड़ देगा, क्या आप चाहते हैं? यदि नहीं, तो अंत में जोड़ें \nया जोड़ें $:.*(text in question).*\n
उपयोगकर्ता

यदि लाइनों को संरचना की तरह "abc / xyz / कुछ" हो रहा है, तो regex add '\' का उपयोग करने के लिए। उदाहरण के लिए अगर हमें abc / और / कुछ के बीच कुछ भी खोजना है तो अभिव्यक्ति होगी: abc /\.*.*\/ कुछ
Avik

मेरे लिए काम करता है, अगर आपको मेरे जैसे कई मैचों की आवश्यकता है, |तो जैसे उपयोग करें:.*(a).*|.*(b).*|.*(c).*
bryc

0

मैं एक साइटमैप के संपादन में इसी तरह की समस्या में भाग गया

यह मेरे लिए काम किया:

  1. उस अंतिम शब्द को कॉपी करें जिसे आप हटाना चाहते हैं
  2. सब ढूँढ़ो
  3. पूरी लाइन को हटाने के लिए डिलीट को दबाएं

0

ऊपर दिए गए उत्तर सही तरीके हैं, लेकिन यदि आप एक भी स्ट्रिंग के साथ पंक्तियों से छुटकारा पाना चाहते हैं, तो करें, ढूंढें -> बदलें -> ^.*[a-zA-Z]+.*\nखोज अनुभाग में रखें और रिक्त के साथ बदलें। बदलें बटन को हिट करें यह सभी पंक्तियों को एक ही स्ट्रिंग के साथ हटा देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.