लिनक्स कमांडलाइन (फाइलों से पाठ पैटर्न का उत्पादन)


1

मैं एक निश्चित पैटर्न वाली लाइन में आउटपुट करने की कोशिश कर रहा हूं जो विशेष रूप से नामित फ़ाइलों में एक असंरचित निर्देशिका hirearchy में स्थित है। मेरी रुचि वाली प्रत्येक फ़ाइल का नाम "foo.xml" है। जिस पैटर्न में मेरी दिलचस्पी है वह ऐसा दिखता है: <digit><digit>T<digit><digit> (एक पर्ल रेगेक्स के रूप में: \d\dT\d\d )। मैं इस पैटर्न से मेल खाने वाली पूरी लाइन को आउटपुट करना चाहता हूं (यहां तक ​​कि उस लाइन पर अतिरिक्त सामान जो पैटर्न से मेल नहीं खाता है)।

मैं यहाँ कहाँ हूँ:

find . | grep foo.xml "रूट" में निष्पादित मुझे उन फ़ाइलों की एक सूची देता है जिन्हें मैं स्कैन करना चाहता हूं।

मैं यहाँ से क्या करूँ?

मैं इसके बजाय कमांडलाइन पर बहुत कुछ करूँगा। मैं आसानी से एक पर्ल स्क्रिप्ट लिख सकता था लेकिन ऐसा करने के लिए वास्तव में सीधे आगे का रास्ता है।

जवाबों:


1

आप कुछ इस तरह की कोशिश कर सकते हैं:

find . -name foo.xml -exec grep REGEX '{}' \;

संपादित करें आपके मामले में REGEX है

'[0-9][0-9]T[0-9][0-9]'

इसलिए किसी भी बाद के भावों को निष्पादित करने के लिए -exec विकल्प, जहां '{}' को ढूंढे गए कमांड से किसी भी मिलान से बदल दिया जाता है, और निष्पादित करने की कमान '';
jmetz

1

वैकल्पिक रूप से, जब से आपने PERL का उल्लेख किया है, आप grep-aperl-regexp विकल्प का उपयोग कर सकते हैं:

find . -name foo.xml -exec grep -P '\d\dT\d\d' '{}' \;

यदि आप प्रतिध्वनि के लिए उपयोग किए जाते हैं, तो लवली सुविधा।

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