如何在excel表中保存默认端口和相应的端口

  • 本文关键字:默认 保存 excel bash shell csv awk
  • 更新时间 :
  • 英文 :


我正在将执行结果保存在excel表中,结果将显示在下面

domainurl   http://example.com/
token.uri   https://example.com/
endpoint    https://example.com/
Points     10.15.13.18,10.13.13.26,10.15.13.4
host    10.15.19.21#10.5.17.2
port    8080#8080
host    10.3.4.16
port    1400
Points  10.35.13.18,10.35.23.16,10.115.13.14
host    abcd0001.unix.sty300.org
port    22

我希望看到这样的结果

|A                                               |B
http://example.com/                                80
https://example.com/                               443
https://example.com/                               443
10.15.13.18,10.13.13.26,10.15.13.4                N/A
10.15.19.21,10.5.17.2                            8080
10.3.4.16                                         1400
10.35.13.18,10.35.23.16,10.115.13.14              N/A
abcd0001.unix.sty300.org                          22

注意:如果是https或http端口,则默认为443或80,N/A表示没有端口。

这是我厌倦的代码

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)' $file | grep '^[^#]' | awk '{split($0,a,"="); print a[1],a[2]}' | awk '
BEGIN{
#print "Filename hostname port"
}
/:[0-9]+/{
sub(/:/,"t")
print;
next
}
NF==2{
if($NF~/[0-9]+.[0-9]+.[0-9]+.[0-9]+/ || $NF~/[a-zA-Z,]+..*.[a-zA-Z,]+$/){
val=$0
}
else{
if(val){
print val,$NF
val=""
}
}
}'

谢谢你的建议

使用此输入的脆弱awk脚本

$ awk '/http:///  {print $2,80} 
/https:/// {print $2,443} 
/Points/     {print $2,"NA"} 
/host/       {h=$2} 
/port/       {print h,$2; h=""}' file | column -t
http://example.com/                   80
https://example.com/                  443
https://example.com/                  443
10.15.13.18,10.13.13.26,10.15.13.4    NA
10.15.19.21#10.5.17.2                 8080#8080
10.3.4.16                             1400
10.35.13.18,10.35.23.16,10.115.13.14  NA
abcd0001.unix.sty300.org              22

p.S.在每个块中添加next可以防止一些问题。。。

最新更新