443 Stimmen

Ersetzen einiger Zeichen in einer Zeichenkette durch ein anderes Zeichen

Ich habe eine Zeichenfolge wie AxxBCyyyDEFzzLMN und ich möchte alle Vorkommen von x , y y z con _ .

Wie kann ich das erreichen?

Ich weiß, dass echo "$string" | tr 'x' '_' | tr 'y' '_' würde funktionieren, aber ich möchte das in einem Rutsch machen, ohne Rohre zu verwenden.

526voto

jkasnicki Punkte 4926
echo "$string" | tr xyz _

würde jedes Vorkommen von x , y o z con _ und gibt A__BC___DEF__LMN in Ihrem Beispiel.

echo "$string" | sed -r 's/[xyz]+/_/g'

würde das wiederholte Auftreten von x , y o z mit einem einzigen _ und gibt A_BC_DEF_LMN in Ihrem Beispiel.

406voto

Matthew Flaschen Punkte 266507

Verwendung von Bash-Parameter-Erweiterung :

orig="AxxBCyyyDEFzzLMN"
mod=${orig//[xyz]/_}

205voto

Dylan Daniels Punkte 1823

Dieser Link könnte für Sie hilfreich sein: http://tldp.org/LDP/abs/html/string-manipulation.html .

Im Allgemeinen wird die erste Übereinstimmung von $substring con $replacement :

${string/substring/replacement}

Ersetzen aller Übereinstimmungen von $substring con $replacement :

${string//substring/replacement}

EDIT: Beachten Sie, dass sich dies auf eine Variable namens $string .

16voto

Benjamin W. Punkte 37771

Hier ist eine Lösung mit Shell-Parameter-Erweiterung, die mehrere zusammenhängende Vorkommen durch ein einziges ersetzt _ :

$ var=AxxBCyyyDEFzzLMN
$ echo "${var//+([xyz])/_}"
A_BC_DEF_LMN

Beachten Sie, dass die +(_pattern_) Muster erfordert einen erweiterten Musterabgleich, der mit

shopt -s extglob

Alternativ dazu kann mit dem -s ("Squeeze"-Option) von tr :

$ tr -s xyz _ <<< "$var"
A_BC_DEF_LMN

10voto

Michael Punkte 109
read filename ;
sed -i 's/letter/newletter/g' "$filename" #letter

Verwenden Sie so viele davon, wie Sie brauchen, und Sie können Ihre eigene BASIC-Verschlüsselung erstellen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X