Удалить строку из определенной строки

Простой ответ :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

0
09.05.2019, 21:48
2 ответа

Тот же шаблон, что и в вашем похожем посте

sed '/^DL1 :/ s/,xyz@kk.com//' file

Замените ,xyz@kk.comничем в строках, начинающихся с DL1 :.

1
28.01.2020, 02:40

Перл:

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-файла. Я предлагаю вам добавить больше контекста о том, откуда берутся данные и их предполагаемое использование.

0
28.01.2020, 02:40

Теги

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