string - 如何有效地从文件和前缀文件中读取函数名并在 Bash 中使用所述函数名?
问题描述
我有一堆文件,我将它们连接成一个大文件。单个大文件如下所示:
function foo() {
// ... implementation
}
function bar() {
// ... implementation
}
function baz() {
// ... implementation
}
function foo_bar() {
// ... implementation
}
...
一堆函数。我想创建一个包含所有这些内容的新文件,加上前缀:
module.exports = {
foo,
bar,
baz,
foo_bar,
...
}
基本上导出每个功能。我可以在 bash 中执行此操作的最简单、最干净的方法是什么?
据我所知,这是哈哈,尝试提出解决方案真的很令人困惑:
A := out/a.js
B := out/b.js
all: $(A) $(B)
$(A):
@find src -name '*.js' -exec cat {} + > $@
$(B):
@cat out/a.js | grep -oP '(?function )[a-zA-Z0-9_]+(? \{)'
.PHONY: all
解决方案
这个简单的awk
脚本会做
awk -F '( |\\()' 'BEGIN {print "module.exports = {"} /function/ {print "\t" $2 ","} END {print "}"}' largefile.js
推荐阅读
- javascript - 数组过滤器在 Reactjs 中返回一个空数组
- javascript - 使用 selenium 在 javascript 中解析数据
- node.js - Node Docker 构建和生产容器最佳实践
- google-cloud-platform - 来自 androidpublisher API 的奇怪的 500 错误响应,对解决它没有任何帮助,
- java - 如何将 JPA 关系添加到持久实体的属性子集列表中?
- javascript - 当作为参数传递时,构造函数中绑定的 React 方法如何失去它的有界性?
- android - 从 Firebase 存储中检索图像 url 并放置在警报对话框中
- c++ - 切换到 Visual Studio 2019 后必须在此上下文中展开参数包
- safari - getAccessTokenAsync 仅在 safari 上返回 13001
- javascript - 将函数放入 javascript 对象中是一种好习惯吗?