私は次のような構造を持っています。各ディレクトリには名前は同じですが、内容が異なるファイルがあります。
lib-
|-filled
|-A1K_plus.svelte
|-A1K.svelte
|- // more files
|-outlined
|-A1K_plus.svelte
|-A1K.svelte
|- // more files
|-round
|-A1K_plus.svelte
|-A1K.svelte
|- // more files
|-sharp
|-A1K_plus.svelte
|-A1K.svelte
|- // more files
たとえば、filled/A1K_plus.svelte
次のようなものがあります。
<script>
export let size = '24';
export let color = 'currentColor';
export let ariaLabel = '1k_plus';
</script>
<svg
xmlns="http://www.w3.org/2000/svg"
width={size}
height={size}
fill={color}
class={$$props.class}
{...$$restProps}
aria-label={ariaLabel}
viewBox="0 0 24 24"
><path
d="M19 // removed for brevity"
/></svg
>
次のoutlined/A1K_plus.svelte
ような内容があります。
<script>
export let size = '24';
export let color = 'currentColor';
export let ariaLabel = '1k_plus';
</script>
<svg
xmlns="http://www.w3.org/2000/svg"
width={size}
height={size}
fill={color}
class={$$props.class}
{...$$restProps}
aria-label={ariaLabel}
viewBox="0 0 24 24"
><path
d="M19 3H5c-1.1 // removed for brevity"
/><path
d="M7.5 15H9V9H // removed for brevity"
/></svg
>
など。一部にはpath
最初のラベルがあり、一部にはpath
中央に2つのラベルがあります。svg
今度は、各ファイルに対して、次を生成するすべてのファイルをマージしたいと思います。
<script lang="ts">
export let size = '24';
export let color = 'currentColor';
export let ariaLabel = '1k_plus';
export let variation = 'filled';
let svgpath: string;
switch (variation) {
case 'filled':
svgpath =
'<path d="M10 10.5h1 // path from filled/A1K.svelte"/>';
break;
case 'outlined':
svgpath =
'<path d="M19 3H5c-1.1 // path from outlined/A1K.svelte " />';
break;
case 'round':
svgpath =
'<path d="M19 3H5c-1.1 // path from round/A1K.svelte"/>';
break;
case 'sharp':
svgpath =
'<path d="M21 3H3v18h18V3zM9 // path from sharp/A1K.svelte"/>';
break;
case 'two-tone':
svgpath =
'<path d="M5 19h14v-6.// path from two-tone/A1K.svelte"/>';
break;
default:
svgpath =
'<path d="M10 10.5 // same path as filled"/>';
}
</script>
<svg
xmlns="http://www.w3.org/2000/svg"
width={size}
height={size}
fill={color}
class={$$props.class}
{...$$restProps}
aria-label={ariaLabel}
viewBox="0 0 24 24"
>
{@html svgpath}
</svg>
Bashを使ってこれを行うことはできますか?
答え1
bashを使用してこれを行うことができます。ただし、シェルツールでは不可能なXMLパーサーが必要です。 XMLも一般言語ではないので、see、grep、perl / pcreなどの古典的な正規表現ツールは役に立ちません。
シェルスクリプトでXMLパーサーのコマンドラインツールを使用する投稿がたくさんあります!少なくともこれにより、必要なタグの内容を抽出し、新しい有効なsvgを組み合わせることができます。
どちらにしても、タイプスクリプトを追加するにはもっと必要があります。
正直なところ、bashで試すのではなく、おなじみのより一般的なスクリプト言語を使用してください。シェルは独自の構文以外のコードを解析しないため、シェルでこれを実行しても利点はありません。
Python 3はデフォルトですべてのUnix / Linuxシステムで利用可能で、XMLパーサーに付属しており、「if」に必要なものなどのテンプレート文字列を処理できます。私はtsも動作すると思います。しかし、私はTypeScriptを使用したことがないので、これについて検証された主張をすることはできません。