シェルスクリプトマガジン

第1回 Amazonの商品ページURLをきれいにする

ロジックを考える

 まずは、三つのURLと、整形したURLを見比べて簡略化し、不要な部分を赤で示しました(図1)。

図1 整形前のURL

 「/」の追加もありますが、基本的にいずれも不要な文字列を取り除けばよいだけです。そこで「/」と「?」に注目しました。「/」や「?」は、URLで特別の意味を持つ文字列です。「/」はWebサーバー内のディレクトリの指定だったり、「?」はGETメソッドで値を渡すときに先頭に付く文字列だったりします。この「/」や「?」を区切り文字(デリミタ)にすれば、各文字列を「列」(フィールド)に分割して必要なものだけを切り出せます。
 一つ目のURLの場合は区切り文字を「/」にして「1」「2」「3」「5」「6」の列を、二つ目のURLの場合は区切り文字を「/」にして「1」「2」「3」「4」「5」の列を、三つ目のURLの場合は区切り文字を「?」にして「1」の列を切り出し、さらに区切り文字を「/」にして「1」「2」「3」「4」「5」の列を切り出します。

 区切り文字を「/」にして切り出す列は、最初のURLと、後の二つのURLで違います。そこで、4列目が「dp」になるかどうかで処理を切り替えます。