bash - 如何在特定字符串后从 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
解决方案
使用某些版本支持的 Perl 模式grep
:
grep -P -o ':\K\d+$'
查找以冒号结尾的行,后跟一串数字,然后丢弃冒号和出现在它之前的所有内容。
推荐阅读
- python - Matplotlib Python 将绘图导出为 png 文件并在计算机上打开
- c++ - C++ 文本文件输入
- node.js - 如何从 Postgres 中的准备好的语句中选择 UUID?
- php - 在 Symfony 3.4 应用程序中定义服务定义参数的正确方法是什么
- python - 更改熊猫数据框子集的随机样本的列值?
- jquery - 将参数传递给手动打开的 Bootstrap 模式
- javascript - 带有查询参数Angular 5的router.navigate
- javascript - 从 javascript/jquery 中的表单提交构建对象
- python - Python - Pandas 棘手的列总和
- angular - 如何让 ForEach 循环和 SetTimeout 与 Angular 6 一起使用