Замена слов внутри файла

0

У меня очень большой код, в котором я по ошибке использовал unsigned вместо uint64_t. Из-за этой ошибки мой код не работает для больших значений более 4 байт. Теперь я хочу повторить эту ошибку... но мне не удалось войти в каждый файл (есть 540 файлов) и заменить unsigned на uint64_t. Есть ли какая-нибудь команда linux или какой-то автоматизированный метод, который может сделать это для меня.

Я просто хочу заменить слово unsigned на uint64_t. Я не хочу, чтобы слова, такие как unsignedFunction заменялись на uint64_t.

EDIT: Когда я заменяю его на функции следующего вида:

   static inline unsigned readUint32Aligned(const unsigned char* data) { return toHost(*reinterpret_cast<const unsigned*>(data)); }

Преобразованная функция:

   static inline uint64_t readUint32Aligned(const uint64_t char* data) { return toHost(*reinterpret_cast<const uint32_t*>(data)); }

Это дает мне ошибку:

error: "данные не были объявлены в этой области

Есть ли что-то иное, чем uint64_t которое я могу сделать для замены, которое может работать для функций вышеуказанной формы?

Извините, нет, наверное, опечатки.

  • 2
    Используйте редактор с утилитой find in files. Поиск и замена. Задача решена !
  • 0
    Этот вопрос действительно связан с программированием? Вы просите проблему / инструмент для замены текста, а не для проблемы программирования на C / C ++.
Показать ещё 7 комментариев
Теги:

1 ответ

2

Используйте sed и шаблон s/\bunsigned\b/uint64_t/g.

\b - интересный бит. В регулярных выражениях он соответствует границам слов.

  • 1
    Или для всех файлов: find . -name "*.cpp" -exec sed -i "s/\bunsigned\b/uint64_t/g" '{}' \;
  • 0
    Большое спасибо за помощь. Но я боюсь после замены ... В итоге я получил ошибку, как упоминалось в моем отредактированном вопросе. Есть ли другой выход
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню