从shell脚本中的RTF文件中提取信息

时间:2013-03-04 10:06:55

标签: linux shell extract rtf

我们需要在Oracle EBS中将许多RTF文件上传到各自的类别。为此,我们需要阅读存储在RTF文件的文档属性中的一些信息。这些字段是标题,主题,作者,公司和类别。

当我们在记事本中打开RTF文件时,我们可以看到此信息,但不知道如何使用linux命令提取它。使用grep并不是很成功。

我在这里粘贴RTF文件的一部分,其中包含此信息

\mwrapIndent1440\mintLim0\mnaryLim1}{\info**{\title ^XXSLS_GBL_ORDACK^}****{\subject XXSLS}****{\author ^es_ES,es_FR,ES_IT,ES_de^}**{\doccomm $Header: XXSLS_GBL_ORDACK_ES_ES.rtf $}
{\operator }{\creatim\yr2012\mo11\dy11\hr14\min3}{\revtim\yr2013\mo3\dy2\hr10\min43}{\version24}{\edmins361}{\nofpages4}{\nofwords725}{\nofchars14202}{\*\manager }{\*\company }**{\*\category ^BD^}**{\nofcharsws14898}
{\vern32773}}{\*\userprops {\propname _DocHome}\proptype3{\staticval -974575144}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw11850\paperh18144\margl851\margr851\margt851\margb0\gutter0\ltrsect

有人可以建议我们如何提取这些信息如下:

Title=^XXSLS_GBL_ORDACK^
Subject=XXSLS
Author=^es_ES,es_FR,ES_IT,ES_de^
Category=^BD^

1 个答案:

答案 0 :(得分:0)

Grep可以使用-E(高级正则表达式)标志和-o(仅匹配输出)标志来执行此操作。

 title=`grep -oE 'title [^\}]+' file.rtf | sed 's/title //g'`
 echo "title=$title"
 subject=`grep -oE 'subject [^\}]+' file.rtf | sed 's/subject //g'`
 echo "subject=$subject"
 author=`grep -oE 'author [^\}]+' file.rtf | sed 's/author //g'`
 echo "author=$author"
 category=`grep -oE 'category [^\}]+' file.rtf | sed 's/category //g'`
 echo "category=$category"

我得到了

title=^XXSLS_GBL_ORDACK^
subject=XXSLS
author=^es_ES,es_FR,ES_IT,ES_de^
category=^BD^