Ошибка команды sed в скрипте с аргументами

Я столкнулся с похожей проблемой при настройке LibAV

./configure --target-os=mingw32 --arch=x86  --enable-shared --enable-static \
--enable-dxva2 --disable-encoders --enable-hwaccel=dxva2 --extra-cflags=-O3 \
--enable-pthreads

hw -ускоритель dxva2 был отключен, так как dxva2api.h отсутствовал.

Я предлагаю указать, где находится dxva2api.h, и добавить его местоположение в $path или скопировать в соответствующий каталог.

2
15.10.2021, 00:18
2 ответа

Здесь уже есть отличные sedрешения, но лично я бы предпочел awkдля этого:

awk \
-v if='#if defined(NV_C2C_UPPER_PD)' \
-v endif='#endif' \
'
/payload/{
  line=$0
  gsub("payload","upper_payload",$0);
  printf "%s\n%s\n%s\n%s\n",$line,if,$0,endif
  next
}
1' file
1
15.10.2021, 06:59

Один из способов использования только конструкций POSIXly:

sed -e 'p
  /payload/!d
  s//upper_&/
  i\
#if defined(NV_C2C_UPPER_PD)
  a\
#endif
' file

Если вам не нужны экранированные символы новой строки, вы можете сделать следующее, оставаясь при этом POSIX-совместимый:

sed -e 'p
  /payload/!d
  s//upper_&/
  H;s/.*//;x;G
  s/^/#if defined(NV_C2C_UPPER_PD)/
  s/$/#endif/
' file
1
16.10.2021, 05:30

Теги

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