我想使用模式分析获取任意字符串的子字符串。示例字符串:
<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 -ne
将file.txt
逐行分析- 那么它将只打印
(...)