배경
여러 파일이 들어 있는 폴더(클래스라고 함)가 있습니다. 모든 Java 파일을 반복하고 import 문을 변경하려면 쉘 스크립트를 작성해야 합니다.
예
classes
│ ├── Context.java
│ |── abc.java
│ |── cde.java
│ ├── another.java
내부에는 Context.java
다음이 있습니다.
import "../folder1/abc.java"
import "../cde.java"
일부 파일에는 import 문이 하나만 있습니다.
목표는 가져오기 위치를 에서 으로 변경하는 것 ../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
하고 변수로 바꾸려고 합니다.
저는 맥 컴퓨터를 사용하고 있습니다.