バックスラッシュを二重引用符内のスラッシュに置き換えます。

バックスラッシュを二重引用符内のスラッシュに置き換えます。

もともとWindowsで開発されたいくつかのCソースコードがあります。では、Linuxで動作するようにしたいと思います。次のようにLinux形式に変更する必要があるインクルードディレクティブがたくさんあります。

#include "..\includes\common.h"

.hすべてのファイルを繰り返し.c、インクルードディレクティブを探し、バックスラッシュをスラッシュに置き換えるコマンドラインを探しています。

ベストアンサー1

find+GNUsed解決策:

find . -type f -name "*.[ch]" -exec sed -i '/^#include / s|\\|/|g' {} +
  • "*.[ch]"- 拡張子を持つファイルのワイルドカード検索.cまたは.h
  • -ised:ファイルを適切に編集できるGNU拡張で、バックアップは必要ありません。 FreeBSD / macOSsedにも同様の拡張機能がありますが、構文は-i ''異なります。
  • /^#include /- パターンで始まる行に出会ったり一致したりする場合:#include
  • s|\\|/|g\-すべてのバックスラッシュをスラッシュに置き換えます/(リテラル表現のために\バックスラッシュにエスケープされます\)。

おすすめ記事