我想从这个输出中获取ip但是idk how.Is是否可以将输出限制为我想要的。
VPN Connection Setting Name |kap1
Destination VPN Server Host Name |159.89.199.192
Destination VPN Server Port Number |5252
Destination VPN Server Virtual Hub Name |kap
Proxy Server Type |Direct TCP/IP
另一个问题。 ip有端口。我只想要ip。对不起,另一个问题。感谢大家的帮助。
VPN Connection Setting Name |kap1
Status |Connected
VPN Server Hostname |159.89.199.192:5252 (Direct TCP/IP Connection)
答案 0 :(得分:3)
考虑您共享的数据保存在文件中。 文件名:file.txt
$grep 'VPN Server Host Name' file.txt | awk -F '|' '{print $2}'
159.89.199.192
答案 1 :(得分:3)
编辑: 由于OP说OP有不同类型的Input_file,所以现在相应地添加解决方案。
awk '/Hostname/ && match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){print substr($0,RSTART,RLENGTH)}' Input_file
关注awk
可能会对您有所帮助。
awk -F"|" '/Destination VPN Server Host Name/ && $2 ~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/{print $2}' Input_file
OR
your_command | awk -F"|" '/Destination VPN Server Host Name/ && $2 ~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/{print $2}'
答案 2 :(得分:2)
想象一下你有一个输入文件:
$ cat vpn_info
Item |Value
--------------------------------------+--------
VPN Connection |kap1
Destination VPN Server Host Name |159.89.199.192
Destination VPN Server Port Number |5252
...
...
然后您可以使用以下命令之一:
<强> AWK:强>
awk -F '|' '/^Destination VPN Server Host Name/{print $2}' vpn_info
159.89.199.192
您将|
定义为字段分隔符,然后在行以Destination VPN Server Host Name
开头时打印输入的第二个字段
<强> SED:强>
sed -n 's/^Destination VPN Server Host Name *|//p' vpn_info
159.89.199.192
您要求sed
无效替换^Destination VPN Server Host Name *|
,如果有效则打印结果。
第二次输入:
$ cat vpn_info
Item |Value
--------------------------------------+--------
VPN Connection |kap1
VPN Server Hostname |159.89.199.192:5252 (Direct TCP/IP Connection)
<强> AWK 强>
$ awk -F '[:|]' '/VPN Server Hostname/{print $2}' vpn_info
159.89.199.192
您可以使用此awk
命令指定2个字段分隔符:
和|
,并在到达包含VPN Server Hostname
的行时打印第2个字段
答案 3 :(得分:2)
这可能适合你(GNU sed):
sed -r '/\n/!s/([0-9]{1,3}\.){3}[0-9]{1,3}/\n&\n/;/^\S+[0-9]\n/P;D' file
按换行符覆盖所有IP地址,只打印匹配的字符串。
第一个正则表达式寻找换行符。换行符是sed用于分隔它放置在模式空间(PS)中的字符串的内容。因此,通常情况下,除非用户通过替换命令引入换行符,否则永远不会在PS中找到换行符。所以第一个命令说“除非模式空间中已经有新行,即已经进行了以下替换。围绕一个看起来像带有换行符的IP地址的字符串”。 IP地址匹配一到三个数字,后跟一个句点,发生三次,后跟一到三位数。下一个sed命令打印任何这样的IP地址,最后一个命令删除PS中的第一行,无论它是否是IP地址。如果PS为空,则按照D
命令,读取下一行,否则再次循环执行命令。因此,命令的总体效果是在单独的行上列出所有IP地址。