【发布时间】:2020-03-09 04:53:24
【问题描述】:
我正在尝试将以下清单中的 android:versionName 值替换为当前日期:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
coreApp="true"
package="com.btaudio"
android:versionName="0.7-191027"
android:sharedUserId="android.uid.system">
这是我使用 sed 命令的批处理脚本:
chmod 777 AndroidManifest.xml
test=$(date '+%y%m%d')
sed 's|(?<=-).*?(?="\n)|'"$test"'|g' AndroidManifest.xml
我的想法是抓住“-”和后跟换行符的双引号之间的文本,使用分隔符后变量可以正常工作。
任何人都可以向我解释为什么 sed 无法识别 regex 表达式,尽管在 regex101 上它准确地显示了我想要替换的文本 (https://regex101.com/r/yHFkrV/1)。
我已经阅读了有关使用 -e、-E 或 -r para 的信息,但这些都不适合我。我也尝试了一些对表达式的分隔符,但它似乎没有任何效果。
编辑:我在 Ubuntu 16.04.3 LTS 上使用 sed (GNU sed) 4.2.2
【问题讨论】:
-
您的
sed实现是否支持环视和前瞻?请检查! -
sed既不支持前瞻也不支持后瞻。