Diese Frage hat hier bereits eine Antwort:
- Multi-Line Sed Ersetze 2 Antworten
Ich versuche, Include-Guards in Kopfzeilen durch dieselben Include-Guards zu ersetzen, denen Folgendes vorangestellt ist #pragma once
:
#ifndef _HELLO_H
#define _HELLO_H
Wird:
#pragma once
#ifndef _HELLO_H
#define _HELLO_H
Außerdem möchte ich die Zeilenenden unverändert lassen. Wenn es sich um LF handelte, verwenden Sie LF. Wenn es sich um CRLF handelte, verwenden Sie CRLF.
Ich habe mir folgenden Befehl ausgedacht:
find . -type f -name "*.h" -print0 | xargs -0 sed -i -E -e 's/#ifndef ([a-zA-Z_][a-zA-Z_0-9]+)(\r?\n)#define \1/#pragma once\2#ifndef \1\2#define \1/g'
Aber ich habe nur Zeilenenden in allen Überschriften ersetzt und keine #pragma once
hinzugefügt.
Befehl im MSYS2-Terminal unter Windows ausgeführt.
quelle