複数のドットファイル名から拡張子を抽出したいと思います。たとえば、
gbamidi-v1.0.tar.gz
「gz」または「0.tar.gz」ではなく「tar.gz」をインポートする必要があります。
sed
私はbash独自の機能(または同じposixコマンドを使用)に依存しないソリューションを好みますcut
。
編集:合理的な解決策は次のとおりです。 「最後のポイントから2番目のポイント以降のすべてのアイテムを取得しますが、長さが<= 1の数字または部分文字列は除外します。」
答え1
拡張子がピリオドの後の文字で始まると仮定すると、次のコマンドが印刷されます.tar.gz
。
echo gbamidi-v1.0.tar.gz | awk \
'BEGIN { FS = "\." } \
{ \
extension = ""; \
i = NF; \
while ((i > 1) && (substr($i, 1, 1) ~ /[A-Za-z]/)) { \
extension = "." $i extension; \
i-- \
}; \
print extension \
}'
答え2
すべての場合で動作するわけではありませんが、.gz
拡張可能です。foo.tar.gz
まずaで抽出し、保管をfoo.tar
キャンセルする必要があります。 1つの命令でこれを実行できることが便利です。
延長を受けるべきですか?それは.gz
。
他のものが必要な場合は、regexなどを使用して特定のアイテムをターゲティングする必要がありawk
ますcut
。