2012-02-09 10 views
6

कब्जा मैं इस एक लाइनर है:पर्ल, करने के लिए एक चरित्र संलग्न i-वें समूह

perl -pe 's|.*?((\d{1,3}\.){3})xxx.*|\1|' 

मैं कुछ इनपुट के साथ इस आदेश को खिलाने, 192.168.1.xxx की तरह है, और यह काम करता है। अब, मैं आउटपुट अनुक्रम में 0 जोड़ना चाहता हूं, लेकिन निश्चित रूप से अगर मैं \1 के बाद 0 को सही जोड़ता हूं तो इसे दसवीं कैप्चरिंग समूह के रूप में पार्स किया जाएगा। मैं इसे \1 निर्देश में कैसे जोड़ सकता हूं?

उत्तर

11

आप should use $1 instead of \1 in substitutions। फिर आप इसे इस तरह अनजाने में लिखने के लिए ब्रेसिज़ का उपयोग कर सकते हैं:

perl -pe 's|.*?((\d{1,3}\.){3})xxx.*|${1}0|' 
संबंधित मुद्दे