POSIXパラメーター拡張を使用して、変数から重複文字列パターンを削除します。

POSIXパラメーター拡張を使用して、変数から重複文字列パターンを削除します。

使いたい2.6.2 パラメータ拡張文字列から先行文字を削除しましたが、「最大プレフィックスパターンの削除」がパターンを自動的に繰り返さないことに驚きました。

$ x=aaaaabc
$ printf %s\\n "${x##a}"
aaaabc

ご覧のとおり、最初の項目のみがa削除されました。予想される出力は、またはbcのいずれかです。x=bcx=abcx=aabcx=aaabcx=aaaabc

aの始めからできるだけ削除したい場合は、パターンを作成する方法を心配しています$x。多くの答えはbashを使用しているので、他のスレッドを検索することはできませんでしたが、POSIXシェルソリューションを探しています。

ベストアンサー1

一部のパターンでは、保持したい変数の部分を一致させてパターンを「反転」することができます。

$ for x in "" a aa abc aabc aaabc aaabca aaabcabc bc bcaa
> do
>     printf %s\\n "${x#"${x%%[!a]*}"}"
> done



bc
bc
bc
bca
bcabc
bc
bcaa

おすすめ記事