ファイルのすべての行を変更する方法

ファイルのすべての行を変更する方法

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'

関連情報