Интересно, превращается ли это в матч по гольфу?
sed 'p;p;p'
awk '1;1;1;1'
perl -lpE 'say;say;say' # if Paul McCartney and Michael Jackson were hackers...
Объяснение:
p
Команда sed должна напечатать текущую строку. Поведение по умолчанию состоит в том, чтобы напечатать текущую строку непосредственно перед переходом к следующей строке (поэтому sed должен -n
позволить вам отключить ее). У некоторых старых версий нет точки с запятой (я думаю), поэтому возможно, вам придетсяsed -e p -e p -e p
Awk работает с condition {action}
парами. Если действие опущено, по умолчанию печатается текущая строка, если условие возвращает true. Awk, как и многие C-подобные языки, воспринимается 1
как истина. (Для полноты, если условие опущено, действие будет выполнено для каждой записи.)
Многие функции perl используют преимущества переменной «default». Этот однострочник эквивалентен (на Perl 5.16):
$ perl -MO=Deparse -lpE 'say;say;say'
BEGIN { $/ = "\n"; $\ = "\n"; }
use feature 'current_sub', 'evalbytes', 'fc', 'say', 'state', 'switch', 'unicode_strings', 'unicode_eval';
LINE: while (defined($_ = <ARGV>)) {
chomp $_;
say $_;
say $_;
say $_;
}
continue {
die "-p destination: $!\n" unless print $_;
}
awk
«ыfor
не нуждается в фигурные скобки , если есть только одна команда , чтобы повторить. Иperl
проще , если вы используетеforeach
цикл:for$i(0..3){print}
.