파일의 모든 줄을 수정하는 방법

파일의 모든 줄을 수정하는 방법

index.js다음과 같은 200줄이 넘는 파일이 있습니다.

AcademicCapIcon.svelte
AdjustmentsIcon.svelte
AnnotationIcon.svelte
ArchiveIcon.svelte
...

다음과 같이 변경하고 싶습니다.

import AcademicCapIcon from './dir1/dir2/AcademicCapIcon.svelte'
import AdjustmentsIcon from './dir1/dir2/AdjustmentsIcon.svelte'
import AnnotationIcon from './dir1/dir2/AnnotationIcon.svelte'
import ArchiveIcon from './dir1/dir2/ArchiveIcon.svelte'
...

라이너나 쉘/bash 스크립트를 통해 터미널에서 이를 수행할 수 있는 방법이 있습니까?

나는 다음을 좋아하지만 막혔습니다.

sed -i -e 's/^/import /' index.js && sed -n 's/$/ from && bla bla.

답변1

$ sed "s:\(.*\)\.svelte:import \1 from './dir1/dir2/&':" index.js
import AcademicCapIcon from './dir1/dir2/AcademicCapIcon.svelte'
import AdjustmentsIcon from './dir1/dir2/AdjustmentsIcon.svelte'
import AnnotationIcon from './dir1/dir2/AnnotationIcon.svelte'
import ArchiveIcon from './dir1/dir2/ArchiveIcon.svelte'
...

결과가 만족스러우면 다시 추가해 주세요.-i

답변2

GNU awk 사용:

$ awk -i inplace -v q="'" '{ split($0, arr, "."); print "import " arr[1] " from " q "./dir1/dir2/" $0 q }' index.js
import AcademicCapIcon from './dir1/dir2/AcademicCapIcon.svelte'
import AdjustmentsIcon from './dir1/dir2/AdjustmentsIcon.svelte'
import AnnotationIcon from './dir1/dir2/AnnotationIcon.svelte'
import ArchiveIcon from './dir1/dir2/ArchiveIcon.svelte'

관련 정보