我的源文件是这样的:
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 用户请参阅这个问题。