ファイルがたくさんあります。
AcademicCapIcon.svelte ArrowSmLeftIcon.svelte CalculatorIcon.svelte
AdjustmentsIcon.svelte ArrowSmRightIcon.svelte CalendarIcon.svelte
...
...
すべてのファイルの形式は同じです。たとえば、AcademicCapIcon.svelte
次のようなものがあります。
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path d="M12 14l9-5-9-5-9 5 9 5z"/>
<path d="M12 14l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14z"/>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 14l9-5-9-5-9 5 9 5zm0 0l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14zm-4 6v-7.5l4-2.222"/>
</svg>
各ファイルの先頭に次の内容を挿入したいと思います。
<script>
export let className = "h-6 w-6";
</script>
class={className}
後ろに挿入されましたxmlns="http://www.w3.org/2000/svg"
。
たとえば、上記のファイルの最終結果AcademicCapIcon.svelte
は次のとおりです。
<script>
export let className = "h-6 w-6";
</script>
<svg xmlns="http://www.w3.org/2000/svg" class={className} fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path d="M12 14l9-5-9-5-9 5 9 5z"/>
<path d="M12 14l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14z"/>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 14l9-5-9-5-9 5 9 5zm0 0l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14zm-4 6v-7.5l4-2.222"/>
</svg>
ターミナルまたはBashスクリプトを使用してこれをどのように実行しますか?
ベストアンサー1
小さなスクリプトを使用して* .svelteファイルを繰り返し、各ファイルにsedを適用できます。
for FILE in *.svelte; do
sed -e '1i<script>\n export let className = "h-6 w-6";\n</script>\n' -e 's/svg" fill/svg" class={className} fill/' $FILE >$FILE.new
done
出力ファイルは.new拡張子を持つ元のファイル名になりますが、十分に勇敢な場合は、sedコマンドに-iオプションを追加し、最後に> $ FILE.newを削除します。