我有一个压缩的 Javascript 文件,它是单行形式,包含
bla bla bla,;xyz=require("something"),blablabla=3xyz; if (require("somethingElse") === bla bla
我想从这个“字符串”中提取所需的something
和somethingElse
。这是我目前可以构建的代码:
$ 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