Ich versuche, einige Bash-Code von unnötigen Wiederholungen zu bereinigen. Derzeit sieht es so aus (Beispiel Wert):Wie kann man eine Sequenz von mehreren sed-Ersetzungen optimieren?
pattern1='aaa'
pattern2='bbb'
pattern3='ccc'
replacement1='XX'
replacement2='YY'
replacement3='ZZ'
tail $LOGS |
sed -e "s/${pattern1}/${replacement1}/g" \
-e "s/${pattern2}/${replacement2}/g" \
-e "s/${pattern3}/${replacement3}/g"
Ich habe darüber nachgedacht, die Muster und Ersetzungen in 2 Reihen zu setzen:
pattern[0]='aaa'
pattern[1]='bbb'
pattern[2]='ccc'
# ...
replacement[0]='XX'
replacement[1]='YY'
replacement[2]='ZZ'
# ...
aber ich weiß nicht, wie das Endergebnis fusionieren so dass ich den endgültige Befehl wie folgt erhalten und ausführen:
tail $LOGS | sed -e "s/aaa/XX/g" -e "s/bbb/YY/g" -e "s/ccc/ZZ/g"
die Idee zu können, ist mehr von Mustern und Ersatz später in einer sauberen und gut lesbaren Art und Weise hinzuzufügen, ohne die actua zu modifizieren Ich befehle, dass sie ausgeführt werden.
Was ist der beste Weg, dies zu tun?
Sie betrachten könnte zu einer fähigeren Sprache wechseln, wie Perl oder Python. – Kenster
@Kenster - sobald ich einen von ihnen lerne :) – george