编辑

编辑

我有一个压缩的 Javascript 文件,它是单行形式,包含

bla bla bla,;xyz=require("something"),blablabla=3xyz; if (require("somethingElse") === bla bla

我想从这个“字符串”中提取所需的somethingsomethingElse。这是我目前可以构建的代码:

$ echo $script | sed 's|require(\([^)]*\))|\nget-this \1\n|g' | grep get-this | sed 's|get-this ||'

输出为:

something
somethingElse

我怎样才能正确地做到这一点?

编辑

确切的工作代码如下:

cat app.min.js | grep -o 'require("[a-ZA-Z0-9]\+")' | grep -o '".*"' | sed 's/"//g'

生成:

Wifi
net
FlashEEPROM
abc1234
DS18B20

答案1

grep有一个-o--only-matching选项你可以使用它来做到这一点,从man grep

   -o, --only-matching
          Print only the matched (non-empty) parts  of  a  matching  line,
          with each such part on a separate output line.

对我来说这是:

$ cat compressed_js_file  | grep -o 'require("[[:alpha:]]\+")'

生产

require("something")
require("somethingElse")

答案2

仅使用更长的方法awk

awk -F "require" '{print $2 $3}' compressed_js_file | awk -F '[()"]' '{print $3"\n"$8}'

它产生:

something
somethingelse

相关内容