staging.inyokaproject.org

sed verwendugung mit Sonderzeichen

Status: Ungelöst | Ubuntu-Version: Server 18.04 (Bionic Beaver)
Antworten |

Pedi

Anmeldungsdatum:
25. Mai 2020

Beiträge: Zähle...

Hi, die Not ist groß, so rief ich euch. Danke für eure Hilfe. Frage kurz: 1. Wie bekomme ich eine Prüfung auf hundertprozentige Übereinstimmung bei sed Suchen&Ersetzen 2. Sowie ggf. dies mit Sonderzeichen wie [] und #

Allgemein:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash

#Suchmuster
such1="aw 1"
such2="[hallo]"


#Ausgabe
ausgabe1="aw 2"
ausgabe2="[raus mit dir]"

Frage 1:

1
sed -i "s/$such1/$ausgabe1/g" dateipfad1

Hier macht er aus z.B. aw 14 ein aw 24. er soll aber nur aw 1 ersetzen, auch kein #aw 1 (steht alles am Zeilenanfang).

Frage 2: Ich möchte in einem Code nach [hallo] inklusive der [ ] suchen und ersetzen. In dem Code gibt es jedoch auch: hallo , #[hallo] , [abchallodef] usw., daher muss ich nach genauer Übereinstimmung suchen und ersetzen. Soweit bin ich schon gekommen:

1
sed -i "s/^\<$such2\>/$ausgabe2/g" dateipfad2

Funktioniert aber irgendwie nicht mit ^ und \< ... \> zusammen, sowie den Sonderzeichen [ ] und #.

Frage 2 auch für # anstatt [ ]. Dies funktioniert leider nicht aufgrund von [] und/oder #.

Vielen Dank für eure Hilfe. Pedi

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Herzlich willkommen im Forum!

Zu Deinen Fragen

  1. Du muss am Anfang und Ende ankern (mit "^" und "$").

  2. Wenn Du Sonderzeichen als normale Zeichen finden willst, musst Du sie im Muster escapen. Falls Deine Muster nicht fix sind, sondern Benutzereingaben (z.B. als Kommandozeilenargumente), dann musst Du sie entsprechend escapen bevor Du sie sed gibst.

zu 1.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ sed 's#^aw 1$#ersetzt#' <<'TEXT'
> a
> aw
> aw 1
> #aw 1
> aw 14
> TEXT
a
aw
ersetzt
#aw 1
aw 14

Zu 2 fehlt mir aktuell die Zeit.

Pedi

(Themenstarter)

Anmeldungsdatum:
25. Mai 2020

Beiträge: Zähle...

Hi, lieben Dank rklm, dies hat mir bereits weitergeholfen.

Sollte jemand eine Lösung zu 2 haben, so wäre ich sehr dankbar.

MfG Pedi

Antworten |