Каковы два предупреждения буферизации строк в Unix?

(Мне интересно, может ли термин (скрытый) вызвать какие-либо проблемы. Это имя локального хост-компьютера в локальной сети. 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 . Вы настроили это наоборот.

0
09.10.2018, 11:31
3 ответа

От первого привет до первого приветствия, следующего за ним.

грэп

Использование (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///, вам необходимо определить переменную newlinenl:

$ 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'
2
28.01.2020, 02:31
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

    .

    Источник:https://www.gnu.org/software/grep/manual/grep.html

0
28.01.2020, 02:31

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
0
28.01.2020, 02:31

Теги

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