выделение части текста из вывода другой команды - PullRequest
2 голосов
/ 03 июня 2011

Ниже приведен вывод команды "grep".

grep -R 'table="transaction"' /home/shantanu/*
/home/shantanu/conf/transaction/Transaction.hbm.xml:    <class name="com.common.core.transaction.entity.Transaction" table="transaction">

Я хочу получить имя класса из строки выше:

com.common.core.transaction.entity.Transaction

Это первая переменнаядвойные кавычки.

Ответы [ 4 ]

1 голос
/ 03 июня 2011
grep -R 'table="transaction"' /home/shantanu/* | cut -d '"' -f 2
1 голос
/ 03 июня 2011

Какой-то вариант этого:

grep -R 'table="transaction"' /home/shantanu/* \
| sed 's/.*name="\(.*\)" table.*/\1/'

должен доставить вас туда. Возможно, вам потребуется скорректировать материал до и после \(.*\), чтобы он был более узким или более свободным в зависимости от всех данных, которые вы должны обработать.

0 голосов
/ 03 июня 2011

Это вариант ответа Гленна Джекманса.

$ awk -F\" '/table="transaction"/{print $2}' /home/shantanu/*

Он сильно зависит от вашего утверждения, что «Это первая переменная в двойных кавычках».

0 голосов
/ 03 июня 2011

это будет работать для любого заказа:

<class name="com.common.core.transaction.entity.Transaction" table="transaction">
<class table="transaction" name="com.common.core.transaction.entity.Transaction">

grep -R 'table="transaction"' /home/shantanu/* |\
sed -n 's/.*name="\([^"]*\)".*/\1/;p'
...