Linux 如何在bash中从两个模式之间提取字符串

Linux 如何在bash中从两个模式之间提取字符串,linux,bash,grep,Linux,Bash,Grep,我从bash开始,我想在一个.txt文件中找到我的ip,并对其进行分析。 以下是部分文件的示例: “目录inet:192.****Difus:” 我想到的路径是搜索“inet:”和“”之间的所有文本。到目前为止,我最大的方法是使用“grep inet”获取整个线路,但我不知道如何仅获取ip,而不是使用ip获取整个线路 谢谢大家! 救援人员: perl -ne 'print $1, "\n" if /inet:([^ ]+)/' -n逐行读取输入 [^]匹配的字符不是空格 +表示字符必须出现一

我从bash开始,我想在一个.txt文件中找到我的ip,并对其进行分析。 以下是部分文件的示例: “目录inet:192.****Difus:”

我想到的路径是搜索“inet:”和“”之间的所有文本。到目前为止,我最大的方法是使用“grep inet”获取整个线路,但我不知道如何仅获取ip,而不是使用ip获取整个线路

谢谢大家!

救援人员:

perl -ne 'print $1, "\n" if /inet:([^ ]+)/'
  • -n
    逐行读取输入
  • [^]
    匹配的字符不是空格
  • +
    表示字符必须出现一次或多次
  • (…)
    创建一个捕获组,第一个捕获组被引用为
    $1

尝试结合
awk
grep
。下面的解决方案可能会有所帮助。

既然您在Linux上,您可以利用GNU
grep
-o
-p
选项:

grep -oP '(?<= inet:)[^ ]+' file.txt
grep-oP'(?请避免。
$ grep -oP '(?<= inet:)[^ ]+' <<<'Direc. inet:192.****** Difus.:'
192.******