Ich möchte 2 Fragen über sed stellen.Unterschied sed Befehle sed 's ///' und sed "s ###"
Zum Beispiel, wenn ich versuche, eine Zeichenfolge an sed, die Sonderzeichen wie (. \ N *. +) Und sed kann nicht richtig ausgeführt werden.
set a = ".\n*.\+"
set input = ".\n*.\+adsdfasdf"
Dann führen:
echo "$input" | sed 's/'$a'/hi/g' # It will give: sed: No match
aber
echo "$input" | sed "s#${a}#hi#g" # It will run but not true
Meine Fragen sind:
- Was ist der Unterschied zwischen diesen Befehlen ist: sed 's ///' und sed "s ###"
- Wie behandelt man Eingabe genau so, wie sie rein ist?
beide gibt 'Hallo' als Ergebnis für mich auf bash Shell und GNU sed' a = ". \ N *. \ +"; input = ". \ n *. \ + adsdfasdf"; echo "$ input" | sed 's /' $ a '/ hi/g'' .... siehe https://stackoverflow.com/documentation/sed/1096/substitution#t=201702190808137883167 für einige Erklärungen zur Verwendung verschiedener Begrenzer. – Sundeep
afaik, Es gibt keine Möglichkeit, sed mitzuteilen, dass die Zeichenfolge als Literal behandelt werden soll. Sie müssen sowohl die Metazeichen als auch das verwendete Trennzeichen umgehen. – Sundeep