Bei der Verwendung sed
erstelle ich oft ziemlich komplizierte und komplizierte reguläre Ausdrücke, die ich zweimal in einer Datei abgleichen muss. Gibt es eine Möglichkeit für mich, diesen regulären Ausdruck zu speichern und ihn nur zweimal zu referenzieren?
Vielleicht etwas, das so aussieht?
sed ' complicated_regex=/^(([a-f0-9]{32})+([a-zA-Z0-9=]{{$i}})?)+$/
s/complicated_regex:complicated_regex/simple-output/
' my_file
Update: Eine Antwort hat die Lösung der Verwendung einer Bash-Variablen vorgestellt. Das funktioniert nicht. Gegeben a test.txt
.
#test.txt
foo bar
bar foo
Und das Drehbuch
#!/bin/bash
VALUE='foo \([a-z]\+\)'
sed 's/"${VALUE}"/foo happy \1/' test.txt
Dies sollte die Ausgabe erzeugen
foo happy bar
bar foo
Aber stattdessen bekomme ich den Fehler
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