sed在子字符串和字符串中子字符串的第一次出现之间提取模式 - 获取相对路径

时间:2017-02-27 20:54:11

标签: regex bash sed

我有以下一行:

SF:/Users/someuser/Documents/workspace/project/src/app/somejavascriptfile.js ./coverage/coveragereport.info

我试图在bash中使用sed从上面的绝对路径获取相对路径。

尝试了一堆组合,但没有一个正则表达式似乎正常工作。

这就是我的尝试:

ABSOLUTEPATH=SF:$(echo $PWD | sed 's_/_\\/_g')
sed -i '' 's/.*'$ABSOLUTEPATH'/SF:' ./coverage/coveragereport.info

但这并没有按预期工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

为什么不直接这样做,而不必使用中间变量:

sed -E -i '' "s@(SF:)$PWD@\1@" ./coverage/coveragereport.info

sed -i '' "s@SF:$PWD@SF:@" ./coverage/coveragereport.info

你现在正在做的事情很好,除了在/表达式的末尾需要sed

ABSOLUTEPATH=SF:$(echo $PWD | sed 's_/_\\/_g')
sed -i '' 's/.*'$ABSOLUTEPATH'/SF:/' ./coverage/coveragereport.info