我有一堆文件。
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
答案2
将插入内容放入其自己的文件中,然后尝试
sed 's|xmlns="http://www.w3.org/2000/svg"|& class={className}| ' insert_file orig_file
<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">
.
.
.
</svg>