Richtige Nutzung von sed

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: Richtige Nutzung von sed

Beitrag von RobertDebiannutzer » 16.12.2018 17:33:27

Ein schwieriger Fall, denn eigentlich:
Enclosing characters in double quotes preserves the literal value of all characters within the quotes, with the exception of $, `, \, and,[…]
Aber ich denke, es liegt an Folgendem:
Enclosing characters in single quotes preserves the literal value of each character within the quotes.
Damit wird "$" nur noch als "literal $" gesehen und nicht mehr als
Words of the form $'string' are treated specially.
Alle Zitate aus "man bash", Kapitel "QUOTING" - gleiche Version wie die von @Lohengrin.

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: Richtige Nutzung von sed

Beitrag von Lohengrin » 16.12.2018 19:43:21

RobertDebiannutzer hat geschrieben: ↑ zum Beitrag ↑
16.12.2018 17:33:27
Words of the form $'string' are treated specially.
Words.
Kann es sein, dass das nur geschieht, wenn das etwas mit Word Splitting zu tun hat?
The shell scans the results of parameter expansion, command substitution, and arithmetic expansion that did not occur within double quotes for word splitting.
Vllt ist das, was zwischen " ist, per Definition kein Word.
Harry, hol schon mal das Rasiermesser!

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: Richtige Nutzung von sed

Beitrag von Lohengrin » 20.12.2018 02:28:58

Ich habe gerade trs gefunden. Das kannte ich noch gar nicht.
trs ist wie tr, nur nicht mit Bytes sondern mit Byteketten. trs kümmert sich nicht um LF, arbeitet nicht zeilenweise wie sed, sondern byteweise. LF ist da ein Byte wie jedes andere auch, und kann direkt durch \n ersetzt werden.

Code: Alles auswählen

$ anton=etwas$'\n'mit$'\n'Linefeed
$ bodo=$(echo -n "$anton" | trs '\n \\n')
$ echo "kleine Maus im großen Haus"|sed "s/aus/$bodo/g"
kleine Metwas
mit
Linefeed im großen Hetwas
mit
Linefeed
Harry, hol schon mal das Rasiermesser!

Antworten