Цікаво, чи це перетворюється на матч з гольфу :
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}
парами. Якщо дія пропущено, за замовчуванням друкується поточний рядок, якщо умова повертається як істинна. Awk, як і багато мов, схожих на С, трактує 1
як правду. (Для повноти, якщо умова пропущена, дія буде виконуватися для кожного запису.)
Багато функцій perl скористаються змінною "за замовчуванням". Цей одношаровий еквівалент (на 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}
.