Попробуйте это:
awk -v TA=ة -v HA=ه '
{ orig = $0 }
sub(HA"$", TA) { $0 in ta || ha[$0] = orig; next }
$0 ~ TA"$" { ta[$0] = 1; delete ha[$0] }
{ print }
END{ for(i in ha) print ha[i] }
' input_file | LC_ALL=C sort -u > output_file
Я пытался сделать что-то поумнее, создав кастом LC_COLLATE
, но не получилось ;-)
Вы путаете $(if cond,true_path,false_path)
с условными операторами make ifeq
.
Для вашего варианта использования вы можете определить переменную make $(STATUS)
и проверить в операторе if отсутствие установки.
STATUS := $(if $(strip $(shell pacman -Qq zsh | awk '{print $$1}')),,$(strip $(shell pacman -Sy --noconfirm zsh)))
Это можно записать следующим образом:
$(eval PkgName := $(shell pacman -Qq zsh | awk '{print $$1}'))
$(if ${PkgName},,pacman -Sy --noconfirm zsh)
Это должно сделать все это без ошибок.
Еще раз спасибо, я надеюсь, что это может помочь кому-то в будущем.