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


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

<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
2018-04-01 06:46


происхождения


И, пожалуйста, если бы у меня было какое-то решение, почему бы мне задать вопрос. @Jobin - Muhammad Abdullah
Скопировав свой комментарий на свой вопрос, вернул вниз. Это не о решении, о том, что вы пытались найти решение, прежде чем публиковать его. - jobin
Спасибо, но после ваших комментариев я собираюсь использовать свою собственную логику вместо того, чтобы спрашивать людей. - Muhammad Abdullah
Вы можете попробовать это, sed -e 's/<.*\/>//g;s/phone=".*"//;s/[<>]//g' file.txt, Если я правильно вас пойму. Также этот вопрос должен быть задан на stackoverflow.com. - c0rp


ответы:


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

cat file.txt | perl -ne 'print "$1\n" if /(string module name=.*?)phone.*/'
  • perl -ne будет анализировать ваши file.txt построчно
  • то он будет печатать только содержимое шаблона между (...)

2
2018-04-01 07:22