変数WORKSPACE
があります。/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en
各行からそれらを削除し、2つの変数を作成したいと思います。
たとえば、オンラインで検索してみると
"/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/references/architecture/recipes/hermit.md",
得るために
category=references/architecture/recipes
title=hermit.md
線の深さが異なります。
"/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/guides/faq.md",
得るために
category=guides
title=faq.md
など。
以下を試しましたが、最後の2つのアイテムのみを取得します。
title=$(basename "$line")
filedirname=$(dirname "$line")
category=$(basename $filedirname)
Bashでこれを行うにはどうすればよいですか?
答え1
カテゴリとタイトルは、/.vivliostyle/tauri/en
パス名の後に続く内容によって決まると仮定します。
次の条件で
WORKSPACE="/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en"
次の方法を使用して目的のbash
結果を得ることができます。
pathname="${line#$WORKSPACE/}"
#or
pathname="${line/$WORKSPACE\/}" #replaces $WORKSPACE/ with nothing
#Getting category:
category="${pathname%/*}"
echo "Category: $category"
#Getting title:
title="${pathname##*/}"
echo "Title: $title"
したがって、次のパスがあります。
line="/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/references/architecture/recipes/hermit.md"
上記のコードを使用すると、次のようになります。
Category: references/architecture/recipes
Title: hermit.md
次のパスがあります。
line="/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/guides/faq.md"
あなたは以下を得ます:
Category: guides
Title: faq.md
説明する
pathname="${line#$WORKSPACE/}"
上記の行で削除中$WORKSPACE/
変数に含まれる内容$line
。
したがって、文字列は/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/
削除されます/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/references/architecture/recipes/hermit.md"
。
私が入力した文字列は$pathname
次のとおりです。
references/architecture/recipes/hermit.md
category="${pathname%/*}"
上の行は、パス/
で最後に見つかったすべての項目を削除します。references/architecture/recipes/hermit.md
したがって、ここで削除される内容は次/hermit.md
のとおり$category
です。
references/architecture/recipes
title="${pathname##*/}"
上の行は、/
最後のパスより前のパスのすべてのエントリを削除します。
references/architecture/recipes/hermit.md
したがって、ここで削除される項目は次のとおりですreferences/architecture/recipes/
。その後、遺言状には以下が$title
含まれます。
hermit.md