mysql - 如何替换特定字符串的前后字符

标签 mysql sql-server linux shell

我正在使用一些 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),...)

最佳答案

这个 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),...)

关于mysql - 如何替换特定字符串的前后字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32270135/

相关文章:

php - 获取每个表的所有信息

sql-server - SQL Server 2005 T-SQL 问题 : Need help in omitting records

sql - 查找具有相同id的记录并放在同一行

python - cx_freeze 不会使 Python 应用程序独立

linux - ${-#*i} 在 shell 脚本中是什么意思?

Linux 使用 OpenGL 3.2+ w/FBOs 进行离屏渲染

mysql - sql - 如何在找到当月的最高分时按月分组?

mysql - MySQL Workbench 中的 True/False 数据类型

mysql - 从 Eloquent 模型事件中获取新创建的 ID

sql - 如何最好地使用 CASE STATEMENT Count(*)?