[ए जे] के साथ [0-9] की जगह, सेड के साथ काम नहीं करना


11

मैं एक ऐसे कमांड पर काम कर रहा हूं जो सभी अंकों को 0-9 से बदल देता है। मुझे पता है कि मैं कुछ गलत कर रहा हूं, लेकिन सेड रीप्लेक्स को कुछ भी नहीं बल्कि एक स्ट्रिंग शाब्दिक के रूप में व्याख्या कर रहा है।

मैं जिस कमांड का उपयोग कर रहा हूं वह है sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt

यह मुझे बहुत सीधा लगता है, लेकिन मैं इस पर करीब एक घंटे से अटका हुआ हूं। मुझे प्राप्त होने वाले आउटपुट में स्ट्रिंग के साथ 0-9 की जगह "[ए जे]" है

जवाबों:


38

प्रतिस्थापन में, केवल मैच (बाएं हाथ की ओर) एक नियमित अभिव्यक्ति है। प्रतिस्थापन कम या ज्यादा सिर्फ एक शाब्दिक स्ट्रिंग (कुछ बैकस्लैश विस्तार के साथ) है - यह है एक regex नहीं

आप लिप्यंतरण चाहते हैं, प्रतिस्थापन नहीं, इसलिए इसके sसाथ प्रतिस्थापित करें y:

echo 34031445 | sed 'y/0123456789/ABCDEFGHIJ/'

sed में श्रेणियों का उपयोग नहीं किया जा सकता है y, लेकिन पर्ल कर सकते हैं:

echo 34031445 | perl -pe 'y/0-9/A-J/'

या बस उपयोग करें tr:

echo 34031445 | tr 0-9 A-J

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