awkコマンドまたはシェルスクリプトを使用してURIプレフィックス(http://およびhttps://)を削除する

awkコマンドまたはシェルスクリプトを使用してURIプレフィックス(http://およびhttps://)を削除する

私は以下のデータを持っています(実際の出力)

http://localhost:5058/uaa/token,80
https://t-mobile.com,443
http://USERSECURITYTOKEN/payments/security/jwttoken,80
https://core.op.api.internal.t-mobile.com/v1/oauth2/accesstoken?grant_type,443
http://AUTOPAYV3/payments/v3/autopay/search,80
http://AUTOPAYV3/payments/v3/autopay,80
http://CARDTYPEVALIDATION/payments/v4/internal/card-type-validation/getBinDetails,80

次のデータを取得しようとしています(予想出力)。

localhost:5058/uaa/token,80
t-mobile.com,443
USERSECURITYTOKEN/payments/security/jwttoken,80
core.op.api.internal.t-mobile.com/v1/oauth2/accesstoken?grant_type,443
AUTOPAYV3/payments/v3/autopay/search,80
AUTOPAYV3/payments/v3/autopay,80
CARDTYPEVALIDATION/payments/v4/internal/card-type-validation/getBinDetails,80

作業コマンドを次のスクリプトと組み合わせようとしています。

#!/bin/bash
for file in $(ls); 
do 
#echo  " --$file -- "; 
grep -P  '((?<=[^0-9.]|^)[1-9][0-9]{0,2}(\.([0-9]{0,3})){3}(?=[^0-9.]|$)|(http|ftp|https|ftps|sftp)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/+#-]*[\w@?^=%&/+#-])?|\.port|\.host|contact-points|\.uri|\.endpoint)' $file|grep '^[^#]' |awk '{split($0,a,"#"); print a[1]}'|awk '{split($0,a,"="); print a[1],a[2]}'|sed 's/^\|#/,/g'|awk '/http:\/\//  {print $2,80}
       /https:\/\// {print $2,443}
       /Points/     {print $2,"9042"}
       /host/       {h=$2}
       /port/       {print h,$2; h=""}'|awk -F'[, ]' '{for(i=1;i<NF;i++){print $i,$NF}}'|awk 'BEGIN{OFS=","} {$1=$1} 1'|sed '/^[0-9]*$/d'|awk -F, '$1 != $2' 
done |awk '!a[$0]++' 
#echo "Done."
stty echo
cd ..

一日も早く解決しなければなりません。

ベストアンサー1

@DopeGhotiがすばらしい回答を投稿しました。

元の質問のサンプルデータには「http://」と「https://」URIのみがありますが、質問に含まれているポスターのAwkスクリプトはftp、ftps、およびsftpメソッドも処理すると予想されるようです。また。

したがって、URIの先頭(先行スペースを含む)からメソッドを削除する一般的な答えは次のとおりです。

sed -E 's/^\s*.*:\/\///g'

以下は、実験用のいくつかのサンプル入力を含むリンクです。

オンラインでお試しください!

おすすめ記事