如何使用模式分析获取字符串的子字符串?

如何使用模式分析获取字符串的子字符串?

我想使用模式分析获取任意字符串的子字符串。示​​例字符串:

<string module name="Jai" fathername="S.S. Khan" phone="1234">
    <address complete="startz us" />
    <worker company="Delta star" />
<string module name="Jai" phone="1234">
<string module name="Jai" value="" phone="1234">
    <status now="single />
<string module name="Jai" email= "[email protected]" value="" phone="1234">
    <address complete="startz us" />
    <worker company="Delta star" />

我想要以下值(grep编辑phone):

string module name="Jai" fathername="S.S. Khan"
string module name="Jai"
string module name="Jai" value=""
string module name="Jai" email= "[email protected]" value=""

如果我运行以下命令,它仅返回具有以下内容的行phone

cat file.txt | grep phone.

为了克服这个问题,我正在运行:

cat file.txt | grep phone | sed 's/phone=".*"/phone=""/g' | grep -v phone`

它可以起作用,但我想通过精确的模式分析来做到这一点。

有人可以帮助或指导我该怎么做吗?

答案1

我猜你想使用正则表达式来进行模式分析。你可以试试这个perl

cat file.txt | perl -ne 'print "$1\n" if /(string module name=.*?)phone.*/'
  • perl -nefile.txt逐行分析
  • 那么它将只打印(...)

相关内容