从另一个命令的输出中选择文本的一部分

时间:2011-06-03 05:59:34

标签: sed awk grep

以下是“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 个答案:

答案 0 :(得分:1)

这个的一些变体:

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

应该让你到那儿。根据您必须处理的所有数据,您需要调整\(.*\)之前和之后的内容更紧或更松散。

答案 1 :(得分:1)

grep -R 'table="transaction"' /home/shantanu/* | cut -d '"' -f 2

答案 2 :(得分:0)

这适用于任何订单:

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

答案 3 :(得分:0)

这是Glenn Jackmans的回答。

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

它强烈依赖于你声称“它是双引号中的第一个变量。”