ব্যবহার করার সময় sed
, আমি প্রায়শই বরং জটিল এবং জটিল জটিল রেজেক্স তৈরি করি যা একটি ফাইলের সাথে আমার দু'বার মেলাতে হবে। আমার কাছে এই রেজেক্সকে বাঁচানোর এবং কেবল দু'বার রেফারেন্স করার কোনও উপায় আছে?
এমন কিছু মনে হচ্ছে?
sed ' complicated_regex=/^(([a-f0-9]{32})+([a-zA-Z0-9=]{{$i}})?)+$/
s/complicated_regex:complicated_regex/simple-output/
' my_file
আপডেট: একটি উত্তর একটি ব্যাশ ভেরিয়েবল ব্যবহারের সমাধান উপস্থাপন করেছে। এটি কাজ করে না। দেওয়া a 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