Ersetzen Sie $ durch £ mit dem Befehl cat

Ersetzen Sie $ durch £ mit dem Befehl cat

Ich habe die Datei test_output_archive.svd mit einigen Dollarzeichen ( $). Ich habe ein Shell-Skript Replace_dollar_pound.sh mit dem Befehl cat generiert, um das Dollarzeichen durch das Pfundzeichen ( £) zu ersetzen. Das Skript funktioniert unter Solaris 10, der Dollar wird wie erwartet ersetzt. Unter Solaris 11 wird der Dollar jedoch nicht ersetzt und es treten keine Fehler auf.

Inhalt von test_output_archive.svd: Leitungsmiete 9 $ Nur OOB für 10 $

Ersetzen Sie das Dollarzeichen bei Schritt 1 durch das Pfundzeichen, entfernen Sie bei Schritt 2 unbrauchbare Zeichen, entfernen Sie die temporäre Datei bei Schritt 3 und benennen Sie sie bei Schritt 4 um**

Inhalt von Replace_dollar_pound.sh: cat test_output_archive.svd | tr "\044" "\243" > temp_archive.svd cat temp_archive.svd | tr -d "\302" > test_output_archive2.svd rm temp_archive.svd mv test_output_archive2.svd test_output_archive.svd

Müssen irgendwelche Änderungen vorgenommen werden, wenn das Betriebssystem auf Solaris 11 aktualisiert wird?

Antwort1

Das $hat in regulären Ausdrücken eine besondere Bedeutung, es bedeutet „das Ende des Datensatzes“ (in den meisten Fällen Datensatz==Zeile). Sie müssen es also maskieren. Versuchen Sie Folgendes:

sed 's/\$/£/g' file > outfile

Antwort2

Sie können das Sonderzeichen ($) im sed-Befehl maskieren.

$ cat test.txt
£ pound £
$ dollar $
£ pound £
$ dollar $

$ sed 's/\$/£/g' test.txt
£ pound £
£ dollar £
£ pound £
£ dollar £

Oder alternativ

$ sed 's/[$]/£/g' test.txt
£ pound £
£ dollar £
£ pound £
£ dollar £

Antwort3

Sie können sedjedes Vorkommen einer Zeichenfolge wie beschrieben ersetzen.Hier:

sed -i 's/\£/\$/g' FILENAME

Die -iOption gibt an sed, mit einer Datei zu operieren, sist der Operator zum Ersetzen von Zeichenfolgen, ist die Zeichenfolge, die Sie ersetzen müssen, \$ist die Zeichenfolge, die jedes $Zeichen ersetzt ( \die Zeichen werden maskiert, da es sich um Sonderzeichen handelt) und gbedeutet, dass alle Instanzen ersetzt werden.

BEARBEITEN:Die -iOption funktioniert nicht unter Solaris. Sie solltenDasProblemumgehung.

verwandte Informationen