2013-03-04 67 views
1

我們有許多RTF文件,我們需要在Oracle EBS中將它們上傳到各自的類別。爲此,我們需要閱讀存儲在RTF文件的文檔屬性中的一些信息。這些字段是標題,主題,作者,公司和類別。從shell腳本中提取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^ 

回答

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^ 
+0

感謝斯蒂芬。在命令提示符下,這些命令完美工作但是,當我嘗試將輸出分配給像這樣的變量TITLE ='grep -oE'\ {\\ t​​itle [^ \}] +'file.rtf'時,它什麼都不返回(null)。任何想法爲什麼? – Nitin 2013-03-04 13:01:10

+0

如何將** grep -oE'\ {\\ t​​itle [^ \}] +'file.rtf **的結果賦值給一個變量?它不像我們通常那樣工作,就像'VAR_TITLE ='grep -oE'\ {\\ t​​itle [^ \}] +'file.rtf''。這種方式變量具有空值。 – Nitin 2013-03-04 14:19:03

+0

要將命令的結果分配給bash中的變量,您需要將該命令放入反引號中。我無法在這裏看到你,因爲它們對評論格式有特殊意義。在你正在嘗試的單引號替換單引號。 – 2013-03-04 14:24:58