如何从bash

时间:2016-07-08 15:22:01

标签: linux bash grep

我开始使用bash,我想在.txt文件中找到我的ip来分析它。 这是文件的一部分示例: "直销。 inet:192。****** Difus。:"

我想到的路径是搜索" inet:"之间的所有文字。和" &#34 ;.到目前为止,我最大的方法是使用" grep inet:"但是我无法弄清楚如何通过ip获得ip而不是整条线路。

谢谢!

3 个答案:

答案 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 1Lin 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次或更多次。)