Получить текст между словом и последней строкой?

Вы говорите о нескольких веб-серверах, это кажется мне. Таким образом, лучший способ сделать это состоит в том, чтобы, вероятно, вставить следующее Ваш $HOME/.ssh/config

Host portal
    Hostname portal
    User mike
    StrickHostKeyChecking yes
    LocalForward 1024 webserver1:22
    LocalForward 1025 webserver2:22
    LocalForward 1026 webserver3:22
    ...

Host webserver1
    Hostname localhost
    Port 1024
    User mike

Host webserver2
    Hostname localhost
    Port 1025
    User mike

...

Затем просто необходимо инстанцировать соединения с

ssh portal

и затем можно соединиться с любым использованием веб-серверов

ssh webserver<n>
3
23.05.2017, 15:40
2 ответа

Включая последнюю строку, которую вы должны ввести:

sed -n '/word/,$p'

Это соответствует первому вхождению слова до тех пор, пока последняя строка и выводит все совпадения.

Не включая последнюю строку:

sed '/word/,$!d;$d'

... которая удаляет отрицательные совпадения, а затем удаляет последнюю строку.

И чтобы перейти только от последнего совпадения к последней строке, вам нужно немного постараться:

 sed -e :n -e '/\n.*word/D;N;$q;bn'

Он зацикливается - он никогда не завершает нормальный цикл строки sed , а вместо этого добавляет следующую строку ввода в буфер пространства шаблонов, и b возвращается, чтобы сделать это снова. Но когда у него есть по крайней мере две строки в пространстве шаблонов и последнее соответствует word , он удаляет все в буфере, кроме строки, которая соответствует word . В последней строке он просто завершает и прерывает цикл. Таким образом, печатается все, от последней появившейся строки, содержащей слово , до последней строки.

Хммм ... может быть, я сделал это сложнее, чем должно быть:

sed 'H;$x;/word/h;$!d'

С этим добавляется каждая строка, чтобы удерживать пробел. Но строки, соответствующие слову , затем перезаписывают , удерживаемое пространство. Каждая строка в пространстве шаблонов, которая не является последней строкой, удаляется. И в последней строке, сразу после того, как она добавляется для хранения пробела, меняются местами удержание и пробелы (в случае, если последняя строка также содержит слово) и все, начиная с последнего слова перезаписанное удерживаемое пространство печатается.

5
27.01.2020, 21:12

Также можно использовать awk

Включая совпадение с концом файла

awk '/word/{x=1}x' file

После первого совпадения до конца файла

awk 'x;/word/{x=1}' file
2
27.01.2020, 21:12

Теги

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