Я хочу получить подстроку любой строки с помощью анализа образов. Строка в качестве примера:
<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= "Jai@email.com" 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= "Jai@email.com" value=""
Если я выполняю следующую команду, она возвращает только те строки, которые имеют phone
:
cat file.txt | grep phone.
Для преодоления этого, я работаю:
cat file.txt | grep phone | sed 's/phone=".*"/phone=""/g' | grep -v phone`
Это работает, но я хочу сделать это с точно анализом образов.
Кто-либо может помочь или вести меня, как я могу сделать так?
Я предполагаю, что Вы хотите использовать регулярные выражения, чтобы сделать Ваш анализ образов. Можно попробовать этот perl
острота:
cat file.txt | perl -ne 'print "$1\n" if /(string module name=.*?)phone.*/'
perl -ne
проанализирует Ваш file.txt
линию за линией (...)