【发布时间】:2020-06-25 18:15:26
【问题描述】:
问题:
我有一堆具有AS myFieldName 别名的.sql 文件。我需要将所有这些都转换为AS my_field_name,而不影响每行第一部分的tbl.myFieldName。
例如:
之前:tbl.myFieldName AS myFieldName,
之后:tbl.myFieldName AS my_field_name,
我使用了这个非常简单的答案:https://stackoverflow.com/a/28795550/20178 创建了一个 sed 命令来将 myFieldName 转换为 my_field_name,但它对整行都是如此。
我试过sed 's/*AS ([a-z0-9])([A-Z])/AS \1_\L\2/g'(尽管我知道这对保留行的第一部分不起作用)但它似乎根本不匹配任何东西,因此不会产生任何效果。
如何将AS 添加为匹配模式的一部分,然后匹配所有大写字母以进行替换?
【问题讨论】:
-
您需要使用
-E/-r选项,sed -E 's/*AS ([a-z0-9])([A-Z])/AS \1_\L\2/g'。 stackoverflow.com/a/43549677/3832970 表明了这一点。为什么要删除该选项?