gpt4 book ai didi

sql - sed:改变反引号内文本的大小写

转载 作者:行者123 更新时间:2023-12-01 13:27:22 25 4
gpt4 key购买 nike

我正在编写一个 bash 脚本来自动对 SQL 文件执行一些更改。我的问题是:如何使用 sedCamelCase 文本转换为 snake_case ONLY where it's enclosed in backticks?

例如像下面这样的一行:

INSERT INTO TableName (ColumnOne, ColumnTwo) VALUES (120, "YouTube video", "Linux and macOS");

应该变成:

INSERT INTO table_name (column_one, column_two) VALUES (120, "YouTube video", "Linux and macOS");

下面的表达式

sed -i -r 's/([a-z0-9])([A-Z])/\1_\L\2/g' filename.sql

执行所需工作的第一部分(文本最终可以使用 sed -i 's/`[^`]*`/\L\0/g' filename.sql ) 但我需要将其范围限制在反引号内的那些部分(即表名和列名),而其他任何内容都保持不变。我怎样才能达到预期的结果?

最佳答案

使用 GNU sed:

 sed -E 's/(`[^`]*)([A-Z])([^`]*`)/\L\1\L_\2\3/g' file

关于sql - sed:改变反引号内文本的大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47852430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com