首页 > 解决方案 > 如何有效地从文件和前缀文件中读取函数名并在 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

标签: stringbashunixterminal

解决方案


这个简单的awk脚本会做

awk -F '( |\\()' 'BEGIN {print "module.exports = {"} /function/ {print "\t" $2 ","} END {print "}"}' largefile.js

推荐阅读