2015-08-28 3 views
1

Я работаю над преобразованием вставок SQL-сервера в вставки MySQL, используя некоторые операции на уровне файлов Linux. Может кто-то пожалуйста, дайте мне знать, как преобразовать все вхождения ниже в строкеКак заменить символы до и после определенной строки

(..,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 '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' заменит все '... foo ...' на 'bar'. остальное - регулярное выражение. какую часть вы не понимаете? – Kent

Смежные вопросы