Dalam menggunakan sed
, saya sering membuat regex yang agak rumit dan rumit yang harus saya cocokkan dua kali dalam file. Apakah ada cara bagi saya untuk menyimpan regex ini dan hanya referensi dua kali?
Mungkin sesuatu yang terlihat seperti ini?
sed ' complicated_regex=/^(([a-f0-9]{32})+([a-zA-Z0-9=]{{$i}})?)+$/
s/complicated_regex:complicated_regex/simple-output/
' my_file
Pembaruan: Sebuah jawaban telah menyajikan solusi menggunakan variabel bash. Ini tidak berhasil. Diberikan a test.txt
.
#test.txt
foo bar
bar foo
Dan skripnya
#!/bin/bash
VALUE='foo \([a-z]\+\)'
sed 's/"${VALUE}"/foo happy \1/' test.txt
Ini harus menghasilkan output
foo happy bar
bar foo
Tapi saya malah mendapatkan kesalahan
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