Получить последний «блок» (шаблон) файла журнала

Функция (непосредственно из , которая отвечает , с небольшими изменениями):

verbteacher () { 
    wget -qO - http://conjugator.reverso.net/conjugation-english-verb-"$1".html | \
    sed -n "/>Preterite\|>Past]*>@ @g;s/\s\+/ /g;/e I/s/.* I \([^ ]*\) you.*/Simple past: \1/;/ Past/s/ Past /Past participle: /;p}" ; 
 }

Это можно поместить в ваш .bashrcфайл, который будет определять его для любой новой запущенной оболочки (, а не для текущего сеанса оболочки ).

Вы также можете превратить его в скрипт:

#!/bin/sh

wget -qO - http://conjugator.reverso.net/conjugation-english-verb-"$1".html | \
sed -n "/>Preterite\|>Past]*>@ @g;s/\s\+/ /g;/e I/s/.* I \([^ ]*\) you.*/Simple past: \1/;/ Past/s/ Past /Past participle: /;p}" 

Это должно быть сохранено в файле, который вы сделаете исполняемым и поместите куда-нибудь в каталог, который находится в вашем $PATH.

Примечание. :Я не внимательно рассмотрел, что на самом деле делает этот код. Возможно, его еще усовершенствуют. Этот ответ касается проблемы с фактическим использованием предоставленной функции.

-1
17.10.2019, 03:44
3 ответа

Попробуйте это,

tac file | sed -n '/----------/,/----------/{/----------/b;p}'
text4
text3
0
28.01.2020, 05:08

Используйте tac, чтобы сначала просмотреть последние строки, а затем взять первый блок, напечатать его, а затем выйти из sed, и еще раз tac, чтобы восстановить порядок.

$ tac file |
  sed -ne '
     /--/,/--/!d
     //G
     /\n/!{p;d;}
    /\n$/!q
    s/.*/.*/;h
  ' | tac
1
28.01.2020, 05:08

Чтобы решить эту проблему без перестановки строк сначала, мы используем Perl для хранения внутренних строк блока в массиве @A. Продолжайте отбрасывать массив каждый раз, когда мы находимся в начале блока. Распечатайте массив только в конце.

$ perl -ne '
    print(@A), last if eof;
    my $e = /--/... /--/; # get location in blk
    $#A=-1, next if $e == 1; # begin blk
    redo if $e =~ /E0/; # end blk
    push @A, $_ if $e; # inner lines of blk
'  file

text3
text4
1
28.01.2020, 05:08

Теги

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