1

Мои исходные файлы примерно такие:

abl require('../img/a.png') require('../img/b.png')
bla require('../../img/c.png')
ble <Image source={require('../img/d.png')}

Мой ожидаемый результат:

'../img/a.png'
'../img/b.png'
'../../img/c.png'
'../img/d.png'

В скрипте Bash мне нужно извлечь все необходимое '../../img/bla.png' для каждой строки файла. Может быть одна строка для нескольких предметов.

Я пытался использовать это:

cat file | cut -d'(' -f2 | cut -d')' -f1

Но я это могу вырезать только для одной строки на одну строку.

1 ответ1

1
grep -Po '(?<=require\().*?(?=\))'

Он использует взгляд назад и взгляд в будущее. Это потерпит неудачу, если какой-либо путь включает ) . Если каждый путь в одинарные кавычки , то эта версия должна работать даже ) путями:

grep -Po "(?<=require\()'.*?'(?=\))"

Это было проверено на Linux, GNU grep. Пользователи Mac, посмотрите этот вопрос.

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