【发布时间】:2021-03-04 04:26:35
【问题描述】:
我想用stephane 字符串替换fortawesome 字符串(如果后面没有/fontawesome-common-type 字符串)。
sed -e 's,"@fortawesome(/^fontawesome-common-types+),"@stephaneeybert\1,g'
sed: -e expression #1, char 65: invalid reference \1 on `s' command's RHS
示例输入:
"@fortawesome/fontawesome-common-types": "^0.2.32"
"name": "@fortawesome/pro-duotone-svg-icons",
及其预期输出:
"@fortawesome/fontawesome-common-types": "^0.2.32"
"name": "@stephane/pro-duotone-svg-icons",
更新:我选择了使用中间变量的简单替代方法:
EXCLUDE=fontawesome-common-types
BUFFER=EkSkLUdE
cat package/package.json \
| sed -e "s,\"@$REPO_SOURCE/$EXCLUDE,\"@$BUFFER,g" \
| sed -e "s,\"@$REPO_SOURCE,\"@$REPO_DEST,g" \
| sed -e "s,\"@$BUFFER,\"@$REPO_SOURCE/$EXCLUDE,g" \
> package/package.out.json;
【问题讨论】:
-
您能否添加带有预期输出的示例输入
-
使用
perl,perl -pe 's@fortawesome(?!/fontawesome-common-type)@stephane@g' file(demo) -
@WiktorStribiżew 抱歉,如果我的问题不够清楚,我可以在您的演示中看到您的用例不是我所面临的,无论如何,干杯。
-
你的用例是什么?你说“替换
fortawesome,如果它后面没有/fontawesome-common-type字符串”。这正是我建议的做法。