個人的忘備録です。

 

URLをURL部分と、それ以外に分割する方法を考えていました。

例えばですが、以下のURLのような文字列を分離したかったのですが

https://ameblo.jp/yonexyone3/entry-12814920688.html?frm=theme

ネットで調べても、中々ピンとこなかったので、忘備録として残しておきます。


【コマンド書式】

以下のようなコマンドを投げると

echo 'https://ameblo.jp/yonexyone3/entry-12814920688.html?frm=theme' | awk 'match($0, /.*\//) {print substr($0, 1, RLENGTH - 1)"\t"substr($0, RLENGTH + 1)}'


tab文字で区切った https://ameblo.jp/yonexyone3 と entry-12814920688.html?frm=theme に分割する事ができます。

 

※受け取る文字列には必ず/が含まれる前提で書いています。

 

【解説】

match($0, /.*\//)は最長マッチで、文字列先頭から一番最後の/までがマッチし、その値が変数RLENGTHに代入されます
 

printはその後の内容をstdoutへ出力します

 

substr($0, 1, RLENGTH -1)で先頭から/の前までを取り出します

substr($0, RLENGTH + 1)で/の次の文字から末尾までを取り出します



【備考】

echo 部分をcat テキストファイル等に置き換えると、まとめて加工できます