Соответствие шаблону в Perl

Могу ли я предположить, что вы используете X Window System и какой-либо оконный менеджер (KDE/gnome/etc.)? Существует ряд терминальных приложений (например, Konsole), которые имеют встроенное меню, позволяющее выполнять функции копирования/вставки. Таким образом, вы можете:

  1. user@machine:~$ ssh root@172.x.x.x
  2. открыть файл на удаленной машине
  3. выделить содержимое файла мышью и выбрать copy из меню edit на локальной машине.

Или я неправильно понял ваши реальные потребности?

1
02.03.2018, 17:16
2 ответа

No del todo seguro, pero esto podría ayudar

#!/usr/bin/perl
use strict;
use warnings;

my $fname = "deep.txt";
open(my $fh, "<:encoding(ASCII)", $fname) || die "cannot open $fname for reading";

my $num = 0;

while(<$fh>)
{
    $num = substr $_, 0, 3 if eof;
}
close($fh) || warn "cannot close $fname";

print "Oops, last line doesn't start with 999!\n" if $num != 999;

La comprobación eofayuda a saber si se está leyendo la última línea del archivo


El bucle while también se puede acortar a una -línea:

eof and $num = substr $_, 0, 3 while(<$fh>);


Lectura adicional:

1
27.01.2020, 23:44

Использованиеawk:

awk 'END { if ($0 !~ /^999/) print "error"; else printf("Lines in file: %d\n", NR) }' file

Если последняя строка файла не начинается с 999, будет отображаться строка error. В противном случае количество строк в файле будет отображаться в коротком сообщении.

То же самое с Perl:

perl -ne '$line=$_; END { if ($line !~ /^999/) { print "error\n" } else { printf "Lines in file: %d\n", $. } }' file

Сценарий (украшен):

$line = $_;

END {
    if   ( $line !~ /^999/ ) { print "error\n" }
    else                     { printf "Lines in file: %d\n", $. }
}

Это устанавливает $lineна текущую строку ввода.

Блок ENDвыполняется, когда дальнейший ввод недоступен. Он проверяет, начинается ли последний $lineс 999или нет, и выводит либо ошибку, либо количество строк. Переменная $.— это специальная переменная Perl, которая соответствует NRвawk(количеству прочитанных строк/записей ).

0
27.01.2020, 23:44

Теги

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