Простой ответ :a ==
является логическим оператором только внутри [[ … ]]
конструкций.
$ [[ one == one ]] && echo "yes"
yes
И это работает также в ksh и bash.
При использовании вне [[ … ]]
конструкции =cmd становится оператором расширения имени файла , но только в zsh
$ echo ==
zsh: = not found
Именно это происходит внутри более простой [ … ]
конструкции, которую вы использовали.
Но правильный способ проверить, что пользователь, выполняющий сценарий оболочки, является пользователем root, это сделать:
if (( EUID == 0 )); then
echo "root"
else
echo "not root"
fi
Тот же шаблон, что и в вашем похожем посте
sed '/^DL1 :/ s/,xyz@kk.com//' file
Замените ,xyz@kk.com
ничем в строках, начинающихся с DL1 :
.
Перл:
perl -lpe 'if (/^DL1 :/) {s/,?xyz\@kk\.com//; s/: \K,//}' file
АВК:
awk '/^DL1 :/ {sub(/,?xyz@kk\.com/,"");sub(":,",": ")} 1' file
сед:
sed -E '/^DL1 :/ s/,?cde@kk.com//; /^DL1 :/ s/:,/: /' file
Примечание:
Возможно, это не самые лучшие инструменты для манипулирования тем, что по сути является разновидностью CSV-файла. Я предлагаю вам добавить больше контекста о том, откуда берутся данные и их предполагаемое использование.