個人的忘備録です。
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 テキストファイル等に置き換えると、まとめて加工できます