Функция (непосредственно из , которая отвечает , с небольшими изменениями):
verbteacher () {
wget -qO - http://conjugator.reverso.net/conjugation-english-verb-"$1".html | \
sed -n "/>Preterite\|>Past{s@<[^>]*>@ @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{s@<[^>]*>@ @g;s/\s\+/ /g;/e I/s/.* I \([^ ]*\) you.*/Simple past: \1/;/ Past/s/ Past /Past participle: /;p}"
Это должно быть сохранено в файле, который вы сделаете исполняемым и поместите куда-нибудь в каталог, который находится в вашем $PATH
.
Примечание. :Я не внимательно рассмотрел, что на самом деле делает этот код. Возможно, его еще усовершенствуют. Этот ответ касается проблемы с фактическим использованием предоставленной функции.
Попробуйте это,
tac file | sed -n '/----------/,/----------/{/----------/b;p}'
text4
text3
Используйте tac, чтобы сначала просмотреть последние строки, а затем взять первый блок, напечатать его, а затем выйти из sed, и еще раз tac, чтобы восстановить порядок.
$ tac file |
sed -ne '
/--/,/--/!d
//G
/\n/!{p;d;}
/\n$/!q
s/.*/.*/;h
' | tac
Чтобы решить эту проблему без перестановки строк сначала, мы используем 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