シェルスクリプトを使用してimport文を動的に変更する

シェルスクリプトを使用してimport文を動的に変更する

背景

複数のファイルを含むフォルダ(クラスと呼ばれる)があります。すべてのJavaファイルを繰り返してimport文を変更するには、シェルスクリプトを作成する必要があります。

はい

 classes
 │  ├── Context.java
 │  |── abc.java
 │  |── cde.java
 │  ├── another.java

内部にはContext.java以下があります。

import "../folder1/abc.java"
import "../cde.java"

一部のファイルにはimport文が1つしかありません。

目標は、インポート位置をからに変更すること../folder/abc.javaです./abc.java../cde.javaに変更されました./cde.java

私が今まで試したこと:

for file in *.java; do 

    new_import=$(grep -h "import" $file | sed 's:.*/::' | perl -ne 'print "import \"./$_"')

したがって、new_import変数はファイル名を検索し、先頭にimportキーワードを追加できます。今import line sedの使い方をnew_import

   # Inside the same for loop.
   grep -h "import" $file | grep -v "@" | sed -i.bak "s:^.*import.*:$new_import:g"

これは私が必要なことをしていると言っていますが、うまくいきません。sed: -I or -i may not be used with stdinエラーが発生します。部分文字列を含む行を検索しimportて変数に置き換えようとします。

私はMacコンピュータを使用しています。

関連情報