2016-05-12 31 views
-2

我輸入的是:如何使用sed命令獲取以下輸出?

"INTC_KEY,ABC1|OBJID,ABC2" 

我想輸出發送到像一個文件:

DDS.INTC_KEY = REPL.OBJID AND DDS.ABC1 = REPL.ABC2 

這是我到目前爲止已經試過:

sed 's/^/DDS./g' | sed 's/|/=REPL./g' | tr '\n' '~' | sed 's/~/_N~/g' | sed 's/~$/\n/g' | sed 's/~/~\n/g' | sed 's/~/ AND/g' > ${LOG_DIR}/JOIN.tmp 
+1

你應該顯示一些你已經嘗試(或研究過)的證據。 –

+0

嗨安東尼,這是我做的「sed's/^/DDS./g'| sed's/| /=REPL./g'| tr'\ n''〜'| sed's /〜/ _N〜/ g'| sed's /〜$/\ n/g'| sed's /〜/〜\ n/g'| sed's /〜/ AND/g'> $ {LOG_DIR}/JOIN。 tmp「 –

+0

我編輯了您的問題以包含該信息 - 但最好是自己編輯問題。一般來說,如果問題更清楚,您將有更好的機會得到良好的答案,顯示您已完成的一些研究,您嘗試過的方法,您得到的錯誤等。請參閱[我如何問一個好問題?](http://stackoverflow.com/help/how-to-ask) –

回答

0

基礎的在單行輸入上,以下正則表達式將將輸入轉換爲所需輸出:

s/"\([^,]*\),\([^|]*\)|\([^,]*\),\(.*\)"/DDS.\1 = REPL.\3 AND DDS.\2 = REPL.\4/ 

此外殼命令顯示它的工作:

$ echo '"INTC_KEY,ABC1|OBJID,ABC2"' | sed 's/"\([^,]*\),\([^|]*\)|\([^,]*\),\(.*\)"/DDS.\1 = REPL.\3 AND DDS.\2 = REPL.\4/' 

DDS.INTC_KEY = REPL.OBJID AND DDS.ABC1 = REPL.ABC2 

正則表達式基本上匹配的文本的四條(使用轉義的括號),由逗號和豎線分隔並作爲\1提供 - \4回替代參考。

注意:我試圖堅持使用standard sed的功能,並且我使用GNU sed進行了測試,將POSIXLY_CORRECT環境變量設置爲1來模擬標準sed。

+0

謝謝您多安東尼。現在工作正常。我是這個平臺的新手。我會照顧你提到的事情。會更清楚。 –

+0

不客氣@EshanChintawar由於這個答案適合你,你應該[接受它](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)通過點擊左邊的複選標記。 這標誌着問題*答案*和(與upvotes)是謝謝堆棧交換網站表達的方式。 歡迎來到Stack Exchange網絡! –