Amazonの長い長いURLを短縮するワンライナー(正規表現を勉強してみた)
背景
Amazonのページのリンクをコピペすると、こんな感じになる。長い!!🥺
もっとひどい場合だと(上と同じもの)、めっちゃ長い!!!!😭
本当は、これだけでよい😊(3つともクリックしてみてください。同じページに飛びます)
不必要にURLが長いので、
- URLをメールやLINEで送るときに困る
- 自分の読書メモにURLを貼っておこうとおもったときに困る
AmazonのURLを短縮するサービスはいくつかあるみたいだけれど、仕組みは単純なので、正規表現も使ってみたい年頃だし、ワンライナーで書いてみた。
短縮の方針
Amazonの商品ページURLをきれいにするロジックを考えるやAmazon URL短縮ブックマークレットにあるように、要は
https://www.amazon.co.jp/d/番号/
(番号は10桁の半角英数字、アルファベットは大文字のみ)とすればよい。
sed
コマンドで短縮する。
ワンライナー
下記コマンドで短縮できる。
$ sed -E 's/(https:\/\/[^/]+\/).+([0-9A_Z]{10}).+/\1d\/\2/'
じっさいには、(macOSの場合)URLを(クリップボードに)コピーし
$ pbpaste | sed -E 's/(https:\/\/[^/]+\/).+([0-9A_Z]{10}).+/\1d\/\2/'
上記URLをコピーして、上記sed
をすると
$ pbpaste | sed -E 's/(https:\/\/[^/]+\/).+([0-9A_Z]{10}).+/\1d\/\2/'
https://www.amazon.co.jp/d/4791714059
しあわせだ……!
コマンドのなかみの解説
pbpaste
はmacOSのシステムクリップボードから内容を取得している。これをパイプ(|
)で'sed`コマンドにわたしている。
sed
の-E
オプションは、拡張正規表現。ざっくりといえば、各種記号を(ほとんど)エスケープしなくてよいので、目に優しく書きやすい。
sed
での基本的な発想は
-
https://www.amazon〜/
を拾う(\1
と名付けられる) -
xxxxxxxxxx
という10桁の英数字を拾う(\2
と名付けられる) -
\1
と\2
をくっつける
https://〜
については、www.amazon.co.jp
の場合とwww.amazon.com
の場合を想定。
xxxxxxxxxx
については、10桁の半角英数字(アルファベットは大文字のみ)を想定。
(いずれもAmazon URL短縮ブックマークレットによる)
sed -E 's/(https:\/\/[^/]+\/).+([0-9A_Z]{10}).+/\1d\/\2/'
を日本語訳すると
sed -拡張正規表現をつかう '置換/2つの文字列を拾う/1こめと2こめをくっつける'
となる。
https://www.amazon〜/
を拾う
正規表現はhttps:\/\/[^/]+\/
-
\/
は、/
はエスケープが必要のため。 -
[^/]
は、「/以外の文字」 -
[^/]+
で、「/以外の文字が1文字以上続く」
ということで、日本語訳すると「https://
につづいて、/
以外の文字が1文字以上続き、そのつぎに/
となる」ものを探せ、となる。
マッチに対して()
でくくると、\1
などの名前で使えるようになる。カッコでくくったところまで表現すると
(https:\/\/[^/]+\/)
xxxxxxxxxx
という10桁の英数字を拾う
正規表現は[0-9A_Z]{10}
-
[0-9]
で、「任意の半角数字1文字」 -
[A-Z]
で、「任意の半角英字1文字(大文字)」 - くっつけて、
[0-9A-Z]
で、「任意の半角英数字1文字(アルファベットは大文字)」 -
[0-9A-Z]{10}
で、「任意の半角英数字10文字(アルファベットは大文字)」
おなじく、マッチを\2
でつかえるようにカッコでくくると
([0-9A_Z]{10})
残りの部分
(https:\/\/[^/]+\/).+([0-9A_Z]{10}).+
は、半分日本語訳にすると
(https://アマゾン).+(半角英数字10文字).+
となる。
.+
は「文字ならなんでもいい」ので、これで全体にマッチする。
\1
と\2
をくっつける
sed
の後半部分(s/検索/置換/
の置換
部分)は
\1d\/\2
これは略。(\1
と\2
はマッチを意味して、\/
は/
をエスケープしている)
おわりに
これをどう使うか
pbpaste
を併用したワンライナーもじゅうぶん便利だけど、Alfred Workflowと組み合わせてつかいたい。Alfred Workflowの作成については、別記事で。
なぜURLが長いか
Amazonの商品ページURLをきれいにするロジックを考えるにもあるとおり、Amazon側の都合によるのであって、ユーザ側にいいことがあるわけではない(アフィリエイトの人は別として)。
リソース
環境
- macOS BigSur 11.1
- MacBook Pro (13-inch, 2020, Four Thunderbolt 3 Ports)
Author And Source
この問題について(Amazonの長い長いURLを短縮するワンライナー(正規表現を勉強してみた)), 我々は、より多くの情報をここで見つけました https://qiita.com/hann-solo/items/eba0bb27b5639eeca093著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .