Как сделать использовать sed для замены строки с помощью номера строки на удаленной машине с помощью ssh?

Я пытаюсь заменить строку в файле, который находится на удаленной машине. Во-первых, я должен получить номер строки с помощью команды grep, а затем, используя этот номер строки, должен заменить строку, которая находится в этой строке.

Мой код выглядит так: мой файл сценария sc.sh .

# path of script.sh on remote machine
file_path="/home/user/script.sh"

#file-[0-9]\.[0-9]\.[0-9]\.txt using for file-1.0.5.txt

sshpass -p 'pswd' ssh user@remote-01 "bash -s" <<EOF
n=$(grep -wn "/tmp/xyz/file-[0-9]\.[0-9]\.[0-9]\.txt\" $file_path | cut -d : -f 1)

sed -i '{$n}s/old_string/new_string/}' $file_path;
EOF

команды в блоке EOF работают на моем хост-компьютере, но эти команды не работают на удаленном компьютере при использовании ssh. Кто-нибудь может мне помочь ? TIA.

0
25.04.2017, 08:14
1 ответ
file_path="/home/user/script.sh"

sshpass -p 'pswd' ssh user@remote-01 "bash -s" <<EOF
sed -i -e '\|/tmp/xyz/file-[0-9]\.[0-9]\.[0-9]\.txt|s/old_string/new_string/' "$file_path"
EOF

Объяснение

  • Предположим, что ваш файл /home/user/script.sh виден на удаленном m/c, тогда нет необходимости сначала найдите номера строк, где должны выполняться команды s///. Вы должны понимать, что sed позволяет /regex/s/// также выбирать номера строк, в которых будут создаваться подписки.
2
28.01.2020, 02:33

Теги

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