1

У меня есть сжатый файл 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

2 ответа2

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")
1

Более длинный путь с использованием только awk:

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

Это производит:

something
somethingelse

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .