Избавление от «stdin :is not a tty» с удаленным выполнением команды через ssh

С учетом того, что "Синтаксический анализ XML является плохой практикой", вот awkрешение вашего вопроса:)

awk -v RS="<test-result" '
    /logicalname="this\.is\.test1"/&&/result="FAILURE"/ {
    sub("FAILURE","SUCCESS")
}1' RS='' infile.txt

Выше мы говорим awk, что R запись S оператор RSесть <test-result, тогда для каждой записи будут выглядеть оба ШАБЛОНА(logicalname="this.is.test1"и result="FAILURE"), если он был там (в том же блоке ), то измените FAILUREна SUCCESSиз заданногоinfile.txt

Как мы говорили в комментариях, поскольку вы хотите изменить определенный блок с помощью testpath=...., вы можете добавить еще одно третье условие только к команде. ниже изменится, только если testpath="file:/this/is/the/file/path1/abcd.xml"также видно.

обратите внимание, что вам нужно экранировать /, и лучше также экранировать .s.

awk -v RS="<test-result" '  /logicalname="this\.is\.test1"/&&/result="FAILURE"/&&/testpath="file:\/this\/is\/the\/file\/path1\/abcd\.xml"/
    {sub("FAILURE","SUCCESS")
}1' RS='' infile.txt
0
17.10.2020, 20:52
1 ответ

Я только что нашел исправление.

Вместо того, чтобы писать

#! /bin/bash
ssh root@srv01  << 'STOP_SERVER'
    date
    touch /tmp/testFile
STOP_SERVER

напишите следующее

#! /bin/bash
ssh root@srv01  '
date
touch /tmp/testFile
'

Больше никаких проблем.

0
18.03.2021, 22:56

Теги

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