我对带有 -oL 选项的 Masscan 实用程序生成的输出有疑问(“grep-able”输出);例如,它输出:
Host: 143.137.155.7 () Ports: 80/open/tcp////
Host: 177.105.21.41 () Ports: 8080/open/tcp////
Host: 187.78.236.98 () Ports: 80/open/tcp////
Host: 177.137.76.220 () Ports: 8080/open/tcp////
Host: 177.105.10.112 () Ports: 9000/open/tcp////
Host: 191.232.34.9 () Ports: 80/open/tcp////
Host: 179.55.65.144 () Ports: 80/open/tcp////
Host: 177.83.203.147 () Ports: 8080/open/tcp////
Host: 177.182.50.124 () Ports: 8000/open/tcp////
上面的内容既不可读也不容易理解。
如何使用 Linux 命令行实用程序,例如sed、awk 或 grep,使用上面的文件输出如下内容?
143.137.155.7:80
177.105.21.41:8080
187.78.236.98:80
177.137.76.220:8080
177.105.10.112:9000
怎么样
sed 's/^Host: \([0-9.]*\).*Ports: \([0-9]*\).*$/\1:\2/g'
解释:
-
s/regex/replacement/
替代品regex
with replacement
-
^
匹配字符串的开头
-
Host:
匹配自身
-
[0-9.]
是匹配数字 0 到 9 的字符范围,并且.
-
[0-9.]*
匹配零个或多个数字/点
-
\([0-9.]*\)
使匹配的 IP 地址在替换中可用\1
-
.
匹配任何单个字符
-
.*
匹配零个或多个单个字符(即任何字符串)
-
Ports:
匹配自身
-
\([0-9]*\)
匹配一串数字并使其可用\2
-
.*$
匹配字符串的其余部分
旗帜g
最后将替换应用于所有匹配项,而不是每行的第一个匹配项。在这种情况下,只能有一个匹配项(整行),因此该标志不会执行任何操作。我出于习惯而打字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)