उपयोग करने में sed
, मैं अक्सर जटिल और जटिल अवशेषों को बनाता हूं जिन्हें मुझे एक फ़ाइल में दो बार मिलान करने की आवश्यकता होती है। क्या इस रेगेक्स को बचाने के लिए मेरे लिए एक रास्ता है और सिर्फ दो बार इसका संदर्भ लें?
शायद कुछ ऐसा जो दिखता है?
sed ' complicated_regex=/^(([a-f0-9]{32})+([a-zA-Z0-9=]{{$i}})?)+$/
s/complicated_regex:complicated_regex/simple-output/
' my_file
अपडेट: एक उत्तर ने बैश वैरिएबल का उपयोग करने का समाधान प्रस्तुत किया है। यह काम नहीं करता है। एक को देखते हुए test.txt
।
#test.txt
foo bar
bar foo
और स्क्रिप्ट
#!/bin/bash
VALUE='foo \([a-z]\+\)'
sed 's/"${VALUE}"/foo happy \1/' test.txt
यह उत्पादन का उत्पादन करना चाहिए
foo happy bar
bar foo
लेकिन इसके बजाय मुझे त्रुटि मिलती है
sed: -e expression #1, char 24: invalid reference \1 on `s' command's RHS
sed 's/'"${VALUE}"'/foo happy \1/' test.txt
perl -pe 's/^(([a-f0-9]{32})+([a-zA-Z0-9=]{{$i}})?)+:\1$/simple_output/' my_file