我开始使用bash,我想在.txt文件中找到我的ip来分析它。 这是文件的一部分示例: "直销。 inet:192。****** Difus。:"
我想到的路径是搜索" inet:"之间的所有文字。和" &#34 ;.到目前为止,我最大的方法是使用" grep inet:"但是我无法弄清楚如何通过ip获得ip而不是整条线路。
谢谢!
答案 0 :(得分:1)
Perl救援:
perl -ne 'print $1, "\n" if /inet:([^ ]+)/'
-n
逐行读取输入; [^ ]
匹配不是空格+
表示角色必须出现一次或多次(...)
创建一个捕获组,第一个捕获组引用为$1
答案 1 :(得分:0)
尝试<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>jasper</artifactId>
<version>6.0.45</version>
</dependency>
和awk
的组合。以下解决方案可能会有所帮助Link 1。
Lin 2
答案 2 :(得分:0)
由于您使用的是Linux,因此您可以利用GNU grep
的{{1}}和-o
选项:
-P
示例:
grep -oP '(?<= inet:)[^ ]+' file.txt
$ grep -oP '(?<= inet:)[^ ]+' <<<'Direc. inet:192.****** Difus.:'
192.******
告诉-o
仅输出每行的匹配部分。
grep
激活对PCRE(Perl兼容的正则表达式)的支持,它支持-P
等后置断言,允许使用子表达式(?<= inet:)
,在这种情况下)参与进行匹配,而不是捕获(返回)作为匹配字符串的一部分。
inet:
然后只需捕获[^ ]+
之后的所有内容,直到第一个空格字符。 (字符集inet:
匹配任何不是([^ ]
)空格的字符,^
匹配此集合1次或更多次。)