Я хочу найти файл для вхождения слова Logmon в любом месте многострочного файла. Для каждой строки, где найдено совпадение, вставьте # в начале строки. Я могу сделать это с помощью:
sed -i '/Logmon/ s/^/#/' nrds.cfg
Вышеприведенное выполняет мою задачу, однако у меня возникают проблемы с этим для списка удаленных серверов. Ниже то, что я имею до сих пор.
#!/bin/ksh
DEST="/usr/local/nrdp/clients/nrds/"
for x in `cat /home/jack/hostlist`
do
SSH_STATUS=$(ssh -n -o BatchMode=yes -o StrictHostKeyChecking=no $USER@$x "pwd" >/dev/null)
if [[ $? = "0" ]];then
ssh -o "StrictHostKeyChecking no" $x "sudo /usr/localcw/bin/eksh -c 'cd $DEST; sed -i "/Logmon/ s/^/#/" nrds.cfg'"
else
echo "Cannot connect to $x" >> badhosts
fi
done
Выше выдает следующую ошибку: sed: -e выражение # 1, char 8: пропущенная команда
Я подозреваю, что проблема либо в моей цитате, либо мне нужно избежать одной или нескольких косых черт. Я пробовал множество вещей и всегда, кажется, получаю ту же ошибку выше.