javascript - 仅替换特定单词后的部分文本

标签 javascript sed

我们正在尝试使一些文件名在大型 JavaScript 代码库中保持一致。我们希望所有文件名都采用驼峰式大小写,但我们还需要“require”语句采用驼峰式大小写。

所以任何任意的 require 语句都应该像这样改变:

// before
var PurchaseProgressBar = require('src/js/Shared/modules/ProgressBar');
// after - camel cased each part of the path
var PurchaseProgressBar = require('src/js/shared/modules/progressBar');

到目前为止,我们已经有了一个几乎可以工作的 sed 脚本:

sed -e "/require/ s=\b\(.\)=\l\1=g"

但是这会产生:

//  "var PurchaseProgressBar" was also changed! but shouldn't be
var purchaseProgressBar = require('src/js/shared/modules/progressBar');

我们如何使这个 sed 脚本(或其他方法)仅对 require 调用中的文本进行驼峰命名?

最佳答案

如果您想要更改的每个字母都遵循/(即不需要以 Src 或其他内容开头的路径),那么这可以区分您想要更改的行的部分:

sed -e "/require/ s=\/\b\(.\)=/\l\1=g"

这对我来说适用于您的示例输入。

我只是尝试了一种变体,以允许在模式中使用单引号而不是斜杠。如果原始内容包含“require('Src/js/Shared/modules/ProgressBar')”,则此方法有效

sed -e "/require/ s=\(['\/]\)\b\(.\)=\1\l\2=g"

关于javascript - 仅替换特定单词后的部分文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33656033/

相关文章:

javascript - 将 Unix 纪元时间戳转换为 JavaScript 日期时间戳

javascript - 从应用程序授予对共享邮箱的访问权限

php - 表单输入字段的动态扩展

Bash:如何通过插入连续字符和换行符来查找和拆分长行?

sed 无法正确处理多个输入文件

javascript - Flask 和 Angular : Scope in a Controller with Flask templating

JavaScript Protractor While 循环永不结束

java - 如何使用 Shell 脚本在日期模式之前换行?

sed - 如何从检查 docker 容器中获取暴露的端口?

bash - gnu sed - 删除第一个 X 行和最后一个 Y 行之间的行