(Мне интересно, может ли термин (скрытый) вызвать какие-либо проблемы. Это имя локального хост-компьютера в локальной сети. Fritz.box - имя маршрутизатора)
Нет, это просто прокомментируйте .
debug1: файл идентификаторов /Users/sinclair/.ssh/id_rsa type -1 [...] debug1: Попытка закрытого ключа: /Users/sinclair/.ssh/id_rsa { {1}} debug3: нет такого идентификатора: /Users/sinclair/.ssh/id_rsa
Ваш клиент не использует ключ.
Для комментария @Mat на клиенте необходимы доступные
~ / .ssh / id_rsa
и на сервере~ / .ssh / authorized_keys
. Вы настроили это наоборот.
От первого привет до первого приветствия, следующего за ним.
Использование (GNU )grep и tr:
$ <infile grep -oPz "(?s)hi.*?hello" | tr '\0' '\n'
hi aa bb cc
dd ee ff
hello
hi aaa bbb
ccc hello
Описание:
<infile
Исходный файл.grep -oPz
Позвонить с grep
на :-P
)соответствуетP CRE(Perl-совместимое регулярное выражение)-o
)или только напечатать совпадающую часть. -z
)использовать z байт ero (, также известный как NUL и также известный как \0
), в качестве разделителя строк. "(?s)
Сделайте так, чтобы точка PCRE(.
)также совпадала с новой строкой. hi
Начиная со строки hi
. .*?
Соответствует всем символам, которые следуют за (не -жадными из-за?
). hello"
Вплоть до совпадения строки hello
. | tr '\0' '\n'
Преобразовать байты NUL(\0
)(изgrep -z
)в новые строки. GNU-сед:
<infile sed 's/hi/\n&/;s/[^\n]*\n//;s/\(hello\).*/\1/;/hi/,/hello/!d'
Или, для BSD sed, который не позволяет \n
справа от s///
, вам необходимо определить переменную newline
nl
:
$ eval "$(printf "nl='\n'")"
И, затем:
<infile sed 's/hi/\'"$nl"'&/;s/[^\n]*\n//;s/\(hello\).*/\1/;/hi/,/hello/!d'
Или; если бы вы могли написать явный перевод строки:
<infile sed 's/hi/\
&/;s/[^\n]*\n//;s/\(hello\).*/\1/;/hi/,/hello/!d'
grep -oPz "(?s)hi.*?hello" fileName
Пояснение ниже.
температура кота
Выход ->
hi aa bb cc
dd ee ff
hello xxxxxx
aaaa dddd cccc hi aaa bbb
ccc hello cccc fff
00000000000
hi ff
djd h
sdkf hello
dfj
Решение:
grep -oPz "(?s)hi.*?hello" tmp
Выход ->
hi aa bb cc
dd ee ff
hello
hi aaa bbb
ccc hello
hi ff
djd h
sdkf hello
Параметры:
-z
эта опция указывает grep обрабатывать новые строки как обычные текстовые символы и искать нулевые байты для разделения записей. В текстовом файле без нулевых байтов grep -z
будет рассматривать весь файл как одну строку.
(?s)
активировать PCRE _DOTALL, что означает, что '.' находит любой символ или новую строку.
o
Печатать только совпадающую часть
-P
Интерпретируйте шаблон как Perl -совместимое регулярное выражение (PCRE ). Это очень экспериментально, особенно в сочетании с опцией -z (--null -data ), а «grep -P» может предупреждать о нереализованных функциях.
.*?
Для не-жадного соответствия. Начните поиск следующего совпадения hi
, когда найдете первый экземпляр hello
awk для смеха
#!/usr/bin/awk -f
{
n=split($0, col, FS)
for(i=1;i<=n;i++){
(i==n)? sp="" : sp=FS
if (col[i] ~ /hi/) p=1
if (p == 1 && col[i] ~ /hello/) h=1
if (p == 1) printf("%s%s",col[i],sp)
if (h==1) p=0;h=0
}
printf "\n"
}
kapu@jake:$ cat SourceFile
hi aa bb cc
dd ee ff
hello xxxxxx
aaaa dddd cccc hi aaa bbb
ccc hello cccc fff
kapu@jake:$ script.awk SourceFile
hi aa bb cc
dd ee ff
hello
hi aaa bbb
ccc hello