sed.exe -e выражение # 1, неизвестная команда

Он может быть добавлен при этом '& amp;' может использоваться для добавления дополнительных условий, например

df = df[(df.EPS > 2.0) & (df.EPS <4.0)]

Обратите внимание, что при оценке утверждений панды нужны скобки.

2
задан KYOSHIN 27 March 2019 в 06:04
поделиться

1 ответ

Попробуйте это (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 и добавил его обратно, когда вы проверили, что с выводом все в порядке.

Несколько вещей, которые необходимо учитывать:

  • Вы используете sed в cmd или в пакетном файле, поэтому будьте осторожны с двойными кавычками и выходом из него. Поэтому я просто изменил кавычки внутри с помощью \x22, что является еще одним способом ссылки на символы по их ASCII-коду. (Особенность GNU sed).
  • В cmd или в пакетном файле %date:~2,2%%date:~5,2%%date:~8,2% не гарантированно будет YYMMDD, в зависимости от различных настроек локали, они могут иметь / внутри, возможно, это является причиной вашей ошибки. Я попробовал другой способ получить дату, скопировал идею из этого ответа .
  • Вы можете изменить разделитель команды 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"
0
ответ дан Jonathan Leffler 27 March 2019 в 06:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: