gpt4 book ai didi

linux - sed.exe -e 表达式 #1,未知命令

转载 作者:可可西里 更新时间:2023-11-01 10:41:15 27 4
gpt4 key购买 nike

首先,如果重复了,我很抱歉,但我是 Sed 的新手。我被指派去调查错误日志,但在根据一些教程修复它后,我的问题仍然没有解决。

原代码如下:

@sed.exe -i "s/\(.*CONFIG_PROJECT_SW_DATE_VERSION=\"\).*\(\"\)/\1%date:~2,2%%date:~5,2%%date:~8,2%\2/g/" .\ghsproj_du2_avc_src.gpj

运行后出现如下错误:

03-27 13:22:43 sed.exe: -e expression #1, char 53: unknown option to `s'
03-27 13:22:43 Could Not Find C:\jenkins-slave\workspace\project\work\build\ghs\sed*

我已经阅读了一些解决方案,例如删除 -i 和 s 命令之间的空格或在末尾输入“/”,但目前没有任何效果。

P/S:我是在 Windows 10 环境下运行的。

最佳答案

试试这个(GNU sed):

for /f "tokens=2 delims==" %a in ('wmic OS Get localdatetime /value') do set "dt=%a"
sed.exe "s@\(.*CONFIG_PROJECT_SW_DATE_VERSION=\x22\).*\(\x22\)@\1%dt:~2,2%%dt:~4,2%%dt:~6,2%\2@g" file

如果将它们放在批处理文件中,请将两个 %a 更改为 %%a
我删除了 -i 开关,当您测试输出正常时将其添加回来。

需要考虑的几件事:

  • 您正在 cmd 或批处理文件中使用 sed,因此请注意双引号和转义。所以我只是用 \x22 更改了引号,这是另一种通过 ASCII 代码引用字符的方法。 (GNU sed 功能)。
  • cmd 或批处理文件中,%date:~2,2%%date:~5,2%%date:~8,2% 不会保证是YYMMDD,根据不同的Locale设置,它们可以有/在里面,也许这是你的错误的原因。我尝试了另一种获取日期的方法,从 this answer 复制了这个想法.
  • s命令的分隔符可以改成其他字符,我这里改成@
  • g 标志后不应有/

例子:

> type file
var CONFIG_PROJECT_SW_DATE_VERSION="whatever"

> @for /f "tokens=2 delims==" %a in ('wmic OS Get localdatetime /value') do @set "dt=%a"
> sed.exe "s@\(.*CONFIG_PROJECT_SW_DATE_VERSION=\x22\).*\(\x22\)@\1%dt:~2,2%%dt:~4,2%%dt:~6,2%\2@g" file
var CONFIG_PROJECT_SW_DATE_VERSION="190327"

关于linux - sed.exe -e 表达式 #1,未知命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55370197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com