Ich muss "unbedeutende" Teile eines Namens ersetzen. Dies muss in einem Bash-Skript erfolgen. Dazu muss ich die Mittelwörter "VAN", "DEN", "DE" und "DER" entfernen.
Um dies zu tun, ich bin mit dem Einbau-ersetzen (Problem zu 2 Zeilen reduziert):
line="STIG VAN DE WYNKELE";
line=${line//@(' VAN '|' DEN '|' DE '|' DER ')/' '};
echo $line;
Ausgang:
STIG DE WYNKELE
Erwartete Ausgabe:
STIG WYNKELE
Es scheint so, als ob das @ (...) eines der mittleren Wörter anpasst, wobei alle Vorkommen dieses einen mittleren Wortes entfernt werden, aber nicht othe rs.
Die Frage: Mache ich etwas falsch in meiner Syntax? Wenn nicht, wie würde ich diese Wörter entfernen? sed benötigt Dateien, während meine Eingabe eine Variable ist und der geänderte Text auch in einer Variablen gespeichert werden soll. ($ Zeile sollte geändert werden)
'sed' Dateien nicht benötigt, es ist ein Stream-Editor. 'foo = $ (echo" $ foo "| sed ...)' ist ein allgemeines Idiom. –
Häufig, aber normalerweise unnötig, wenn '$ foo' kurz ist. – chepner