もともと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
-i
sed
:ファイルを適切に編集できるGNU拡張で、バックアップは必要ありません。 FreeBSD / macOSsed
にも同様の拡張機能がありますが、構文は-i ''
異なります。/^#include /
- パターンで始まる行に出会ったり一致したりする場合:#include
s|\\|/|g
\
-すべてのバックスラッシュをスラッシュに置き換えます/
(リテラル表現のために\
バックスラッシュにエスケープされます\
)。
答え2
私は次のコマンドでそれをしました
入力.txt
#include "..\includes\common.h"
注文する:
sed 's/\\/\//g' input.txt
出力
#include "../includes/common.h"