Я считаю, что они оба появились одновременно как часть ed
, или, возможно, QED
. Они довольно фундаментальны для использования ed
. Если бы когда-нибудь появилась версия, в которой не было бы ни того, ни другого, я не могу представить, как бы она функционировала.
g//
и //g
- это две совершенно разные вещи. И здесь на самом деле происходит несколько вещей.
//
предназначена для поиска следующей строки в файле, содержащей шаблон, она может вернуть только одну строку (обратите внимание, что 1,$/./
недействительна). g//
предназначен для поиска шаблона в нескольких строках, по умолчанию во всех или в указанном диапазоне. Может возвращать несколько строк. //g
само по себе бессмысленно и не является допустимой командой в ed
(хотя некоторые другие движки принимают его, функционально он все равно такой же, как //
). s//
предназначен для замены первого экземпляра шаблона в текущей (или указанной) строке (строках). s//g
- для замены всех экземпляров шаблона в текущей (или указанной) строке (строках). Я надеюсь, что это хотя бы немного прояснит путаницу. Но я думаю, что суть ответа на ваш вопрос в том, что это две разные вещи. Каждый из них используется по разным причинам и означает разные вещи.
К сожалению, похоже, я не могу добавить комментарий (нужно 50 очков репутации ), поэтому я добавляю свой ответ вам, ребята. Кроме того, я ранее редактировал свой вопрос, но получил это уведомление:
Предложенное вами изменение ожидает рассмотрения. Патрик Мевзек рассмотрел это 2 часа назад :Отклонить Это редактирование предназначалось для автора сообщения и не имеет смысла как редактирование. Это должно было быть написано как комментарий или ответ.
Добро пожаловать в U&L, вы знаете, что у ssh есть код возврата? наряду с -o BatchMode=yes, это может помочь автоматизировать тестирование. (напр. если сш... ; затем эхо подходит для... >> good.txt ; иначе плохое эхо для... >> bad.txt ; fi )– Archemar 54 минуты назад Кроме того, что cat|grep|cut|for можно свести к homedir в $ (awk -F :'$7 ~//bin/bash/ { print $6 }' /etc/passwd ); делать.... – DopeGhoti 1 мин назад
Итак, просто чтобы уточнить :, что вы пытаетесь сделать, для каждого пользователя, для каждого хоста в их известных _хостах, попытаться войти на каждый хост с каждым предполагаемым закрытым ключом, найденным в ~имени пользователя. /.ssh? – DopeGhoti 25 минут назад :ДА
здесь;
Итак, теперь я пытаюсь понять, как сделать так, чтобы эта идея интегрировалась в мой сценарий bash, что-то вроде;
users=$(cat cutted.bash_users)
cat ssh-keys.txt | awk '{print $9}' > cutted.ssh_keys.txt
ssh_keys=$(cat cutted.ssh_keys.txt)
if ssh -l $users -i $ssh_keys $hosts_known -o BatchMode=yes -o ConnectTimeout=5
then echo $users:$hosts_known:$ssh_keys SUCCESS >> results.txt
else
echo $users:$hosts_known:$ssh_keys FAILED >> not-active.txt
fi
Если у вас, ребята, есть идея, как это сделать, я был бы очень рад узнать, как это сделать
Спасибо