sed
पर एक कॉल करें जो sed script लिखता है, और दूसरा इसका उपयोग करने के लिए? अपनी सूची फ़ाइलें listA
और listB
, तो में हैं:
paste -d : listA listB | sed 's/\([^:]*\):\([^:]*\)/s%\1%\2%/' > sed.script
sed -f sed.script files.to.be.mapped.*
मैं 'शब्द' के बारे में कुछ व्यापक मान्यताओं बना रही हूँ बृहदान्त्र या प्रतिशत प्रतीक वाले नहीं है, लेकिन आपको लगता है कि चारों ओर अनुकूलित कर सकते हैं। sed
के कुछ संस्करणों को निर्दिष्ट आदेशों की संख्या पर ऊपरी सीमाएं हैं; यदि यह एक समस्या है क्योंकि आपकी शब्द सूचियां काफी बड़ी हैं, तो आपको उत्पन्न जेनरेट स्क्रिप्ट को अलग-अलग फ़ाइलों में विभाजित करना पड़ सकता है जो लागू होते हैं - या सीमा के बिना कुछ उपयोग करने के लिए बदलें (उदाहरण के लिए पर्ल, उदाहरण के लिए)।
अन्य वस्तुओं के बारे में पता होना चाहिए परिवर्तनों का अनुक्रम है। यदि आप दो शब्दों को स्वैप करना चाहते हैं, तो आपको अपनी शब्द सूचियों को ध्यान से तैयार करने की आवश्यकता है। आम तौर पर, यदि आप wordB (1) wordA को wordB और (2) wordB से wordC को मैप करते हैं, तो यह मायने रखता है कि क्या स्क्रिप्ट स्क्रिप्ट मैपिंग (2) से पहले या बाद में मैपिंग (1) करता है।
दिखाया गया स्क्रिप्ट शब्द सीमाओं के बारे में सावधान नहीं है; sed
के संस्करण के आधार पर आप इसका उपयोग कर रहे हैं और एक शब्द का गठन करने के लिए आपके मानदंडों के आधार पर, आप विभिन्न तरीकों से उनके बारे में सावधान रह सकते हैं।
स्रोत
2011-08-25 22:52:44
अच्छा, कुल मिलाकर, लेकिन एक संभावित समस्या के साथ। यह समाधान आवश्यक रूप से उन रेखाओं पर इंटरैक्टिव रिक्ति को संरक्षित नहीं करता है जहां परिवर्तन किए जाते हैं; व्हाइटस्पेस के रन एक ही स्थान पर बदल जाते हैं। चूंकि हम पाठ की प्रकृति को नहीं जानते हैं, इसलिए यह कोई समस्या नहीं हो सकती है और यहां तक कि एक लाभ भी हो सकता है। वैसे भी, मेरे द्वारा +1। –
यह नीचे दिए गए समाधान से स्पष्ट रूप से अधिक कुशल है जो एक स्क्रिप्ट स्क्रिप्ट लिखता है। 3 मिनट में समाप्त हुआ जो sed समाधान का उपयोग करके 3 दिन लिया। यह केवल पूरे शब्दों को प्रतिस्थापित करता है, भले ही यह नहीं पूछा गया था। –
इस उद्देश्य को हल करती है, लेकिन कैसे सफेद रिक्त स्थान को बचाने के लिये? ऐसा लगता है कि अजीब स्क्रिप्ट उन्हें केवल एक सफेद जगह के साथ बदल देती है। – Guru