1

次のようなインクルードを置き換えることができるかどうかを確認しています。

#include <pathFoo/whatever.H>

と:

#include "whatever.H"

そのためには-iスイッチを使用しますが、正しく実行されていることを確認するには、-iなしで-pスイッチを使用しているだけです。私は次のコマンドを持っています:

perl -p -e 's/<pathFoo\/\(.*\)>/"$1"' thefile

しかし、これは完全には機能しておらず、どの部分がオフになっているのか正確にはわかりませんか?

4

4 に答える 4

4

あなたはparensを脱出したくない、すなわち:

perl -p -e 's/<pathFoo\/(.*)>/"$1"/' thefile

あなたのために働くはずです。

エンディングにも注意してください/

于 2012-12-05T00:02:52.893 に答える
1

TIMTOWTDI以降、ここに二重置換があります。というか、置換と音訳:

perl -pe 's|^#include\s+<\KpathFoo/|| && tr/<>/""/'

したがって、最初にその部分を削除し、pathFoo/それが成功した場合は、<>文字を引用符に音訳します。

于 2012-12-05T00:18:40.447 に答える
1
perl -i~ -pe's!<pathFoo/(.*)>!"$1"!' file

以下の方が安全です。

perl -i~ -pe's!#include\s+\K<pathFoo/(.*)>!"$1"!' file
于 2012-12-05T00:05:44.770 に答える
0

私はこれがあなたをそこに連れて行くと思います:

perl -pi -e 's{#include[ ]+<.+?/([^/]+)>}{#include "$1"}g' file
于 2012-12-05T00:09:38.110 に答える