Skip to content

問題 139 別解1 の出力は厳密には解答例と異なっている件について #72

@ktrarai

Description

@ktrarai

問題 139 別解1 だと

$ echo 'cc.bb.aa.example.com/A/B/C' | sed -n ':a;p;s/[^\.]*\.//;/^[^\.]*$/!ba' | sed -n ':a;p;s/\/[^\/]*//;/^[^\/]*$/!ba' | sed 's%^%https://%g'
https://cc.bb.aa.example.com/A/B/C
https://cc.bb.aa.example.com/B/C
https://cc.bb.aa.example.com/C
https://bb.aa.example.com/A/B/C
https://bb.aa.example.com/B/C
https://bb.aa.example.com/C
https://aa.example.com/A/B/C
https://aa.example.com/B/C
https://aa.example.com/C
https://example.com/A/B/C
https://example.com/B/C
https://example.com/C

となりますが、図 8.2 や他の解答に合わせて (逆順でも)

https://cc.bb.aa.example.com/A/B/C
https://cc.bb.aa.example.com/A/B
https://cc.bb.aa.example.com/A
https://bb.aa.example.com/A/B/C
https://bb.aa.example.com/A/B
https://bb.aa.example.com/A
https://aa.example.com/A/B/C
https://aa.example.com/A/B
https://aa.example.com/A
https://example.com/A/B/C
https://example.com/A/B
https://example.com/A

となるほうが望ましいと考えますがいかがでしょうか。

試行錯誤の結果、別解 1 の 2 番目の seds コマンドを s/\/[^\/]*$// として後ろ側から置換してゆくことにより所期の出力を得られました。

$ echo 'cc.bb.aa.example.com/A/B/C' | sed -n ':a;p;s/[^\.]*\.//;/^[^\.]*$/!ba' | sed -n ':a;p;s/\/[^\/]*$//;/^[^\/]*$/!ba' | sed 's%^%https://%g'

以上、ご確認とご検討のほどよろしくお願いいたします。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions