如何提取 require('') 中的所有字符串?

如何提取 require('') 中的所有字符串?

我的源文件是这样的:

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

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

它使用后视和前视。如果任何路径包含 ,它将失败)。如果每个路径都在单引号内,那么此版本即使)在路径中也应该可以工作:

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

这已在 Linux、GNU grep 上进行了测试。Mac 用户请参阅这个问题

相关内容