Я пытаюсь заменить включение заголовков в заголовках тем же включением, предварительно добавленным #pragma once
:
#ifndef _HELLO_H
#define _HELLO_H
становится:
#pragma once
#ifndef _HELLO_H
#define _HELLO_H
Кроме того, я хочу оставить окончания строк как есть. Если это был LF, тогда используйте LF, если это был CRLF, тогда используйте CRLF.
Я придумал следующую команду:
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'
Но я получил только замену концов строк во всех заголовках, и ни одна #pragma once
не добавилась.
Команда выполняется в терминале MSYS2 под Windows.