Ich habe einen sed-Ersatzbefehl, der sowohl mit BSD sedals auch mit GNU kompatibel sein soll sed. Erweiterte reguläre Ausdrücke sind kein Problem, da ich sie in diesem Fall nicht benötige. Mein Hauptproblem ist der Unterschied in der Art und Weise, wie die beiden sedZeichen-Escape-Sequenzen in den Ersetzungszeichenfolgen interpretieren . Meine Ersetzungszeichenfolge enthält Tabulatoren und Zeilenumbrüche, und ich möchte, dass sie zur Vereinfachung der Wartung in den Befehlszeichenfolgen angezeigt werden. BSD sedinterpretiert die Escape-Sequenzen jedoch nicht und GNU sed tut dies . Was ist der geeignete Weg, sedum diese Escape-Sequenzen auf BSD zu interpretieren? Die folgenden zwei Ausschnitte stehen für mein Problem:
GNU sed
echo ABC | sed 's/B/\n\tB\n'
yeilds
A
B
C
BSD sed
echo ABC | sed 's/B\n\tB\n'
Ausbeuten
AntBnC
Offensichtlich \nund \tsind nicht als Escape - Sequenzen von BSD interpretiertsed
Nun zu meiner Frage. Laut der BSD- sedManpage:
Um ein Newline-Zeichen in der Ersetzungszeichenfolge anzugeben, müssen Sie diesem einen Backslash voranstellen.
Bedeutet dies, dass ich einem wörtlichen Zeilenumbruch einen Backslash voranstellen muss? Wie kann man anweisen sed, Escape-Sequenzen wie \nim Ersetzungstext zu interpretieren ?
sed. Am Ende wird es wahrscheinlich Sinn machen, awk zu verwenden. Was halten Sie von der Interpretation der von mir zitierten BSD sed-Manpage?