2013-02-04 45 views
0

有每行一個定義的一部分,格式爲「WORDPartOfSpeech」處理文檔,添加語音

的任務是處理文檔,添加語音 的一部分,只要它的定義。不應該重新格式化。

例如,如果詞典是

文章 BIG形容詞 BALL名詞

和文檔

大紅色球下跌。

然後輸出應該是

的/條大/形容詞紅球/名詞下跌。

如果我把詞典放在數據庫表中作爲2個字段,並且我運行了一個SQL選擇,輸出爲1個逗號分隔的行,格式如下:「/ article,big/adjective,ball/noun」我採取這一行,並對文檔進行處理,以便像上面那樣輸出它?

+0

從數據庫中的行丟失 「紅」 – Kent

回答

0

您應該修改您的sql查詢以保留任何與詞典中的術語不匹配的單詞(可能通過使用外連接;如果向我們顯示該查詢,我們可以給您更具體的建議)。然後,假設你的輸出,那麼看起來是這樣的(只是一個/以下各期限不匹配的詞彙):

The/article big/adjective red/ ball/noun fell/. 

您可以用sed這樣的清理(假設這個字符串已經被保存在一個變量中稱爲$variablename

sed 's_\/\([ .]\)_\1_g' <(echo "$variablename") 

說明:

  • 我用_代替鄰f /用於爲我的s命令的可讀性劃分界限。語法s/search/replace/gs_search_replace_g同義。

  • \/\([ .]\)告訴sed與文字/匹配任何後跟一個空格或一個週期[ .](轉義爲\/)。由於圍繞該模式的\(\),與此模式匹配的任何內容都會存儲到引用中。

  • \1在替換模式中是我前面提到的反向引用。這就像一個變量,存儲我們在搜索模式中用圓括號包圍的匹配部分。實際上,我已經告訴sed去除任何後面跟着一個空格或一個句點的正斜線,而不會剝去空格或句號本身。

輸出:

The/article big/adjective red ball/noun fell.