Как получить подстроку для строки с помощью анализа образов?

Я хочу получить подстроку любой строки с помощью анализа образов. Строка в качестве примера:

<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`

Это работает, но я хочу сделать это с точно анализом образов.

Кто-либо может помочь или вести меня, как я могу сделать так?

2
задан 8 April 2014 в 10:24

1 ответ

Я предполагаю, что Вы хотите использовать регулярные выражения, чтобы сделать Ваш анализ образов. Можно попробовать этот perl острота:

cat file.txt | perl -ne 'print "$1\n" if /(string module name=.*?)phone.*/'
  • perl -ne проанализирует Ваш file.txt линию за линией
  • тогда, это распечатает только содержание шаблона между (...)
2
ответ дан 8 October 2019 в 09:57

Другие вопросы по тегам:

Похожие вопросы: