2015-08-28 75 views
1

我正在使用一些Linux文件級操作將SQL服務器插入轉換爲MySQL插入。 能有人請讓我知道如何將低於所有出現轉換成一線如何替換特定字符串的字符之前和之後

(..,CAST(0x0000722300000000 AS DateTime),..,CAST(0x0000979900C10112 AS DateTime),...) 

如下圖所示

(..,myfunc(0x0000722300000000),..,myfunc(0x0000979900C10112),...) 

例:

需要轉換CAST(hexval AS DATETIME)作爲myfunc(hexval),其中hexval是動態的。

$echo "(..,CAST(0x0000722300000000 AS DateTime),..,CAST(0x0000979900C10112 AS DateTime),...)" | using grep or sed or awk 

(..,myfunc(0x0000722300000000),..,myfunc(0x0000979900C10112),...) 
+0

@vidhyadar能否請您eloberate你的問題更容易理解的方式? – mohan111

回答

2

這個sed的一行代碼將有助於:

sed 's/CAST(\([^)]\+\) AS DateTime)/myfunc(\1)/g' file 

測試:

kent$ cat f 
(..,CAST(0x0000722300000000 AS DateTime),..,CAST(0x0000979900C10112 AS DateTime),...) 

kent$ sed 's/CAST(\([^)]\+\) AS DateTime)/myfunc(\1)/g' f 
(..,myfunc(0x0000722300000000),..,myfunc(0x0000979900C10112),...) 
+0

非常好...請你解釋一下命令.. – vidyadhar

+0

http://www.gnu.org/software/sed/manual/sed.html - 試試這個 – Abhishek

+0

@vidyadhar的s/... foo .../bar/g'將用'bar'替換所有'... foo ...'。其餘的東西是正則表達式。哪一部分你不明白? – Kent

相關問題