首页 > 解决方案 > 如何在特定字符串后从 IP:PORT 中提取端口?

问题描述

我有一个这样的文件;

someip=[2a05:6a4:2a3a:53asd:0:0:0:1]
someip=[2a05:6a4:2a3a:123a:0:0:0:1]
someip=192.168.1.1
someip=192.167.2.1

anotherip=127.0.0.1:1234

我只想提取1234并将其传递给变量。我通常用这个命令来做这个;

grep -o -E '[^:]+$' file.txt

1234如果没有这些 IP,这将返回someip=。因为它们,它也会尝试返回这些 IP 地址。

我怎样才能只1234从这个文件中提取?也许有办法让这个 grep 命令只在包含字符串的行上工作anotherip=

或者有没有办法只1234从下面的字符串中获取?(但这1234可能会有所不同12345,例如578214等)

something something 127.0.0.1:1234 something something something

标签: bashgrep

解决方案


使用某些版本支持的 Perl 模式grep

grep -P -o ':\K\d+$'

查找以冒号结尾的行,后跟一串数字,然后丢弃冒号和出现在它之前的所有内容。


推荐阅读