Zastanawiam się, czy to zamienia się w mecz golfowy :
sed 'p;p;p'
awk '1;1;1;1'
perl -lpE 'say;say;say' # if Paul McCartney and Michael Jackson were hackers...
Wyjaśnienie:
pPoleceniem sed jest wydrukowanie bieżącej linii. Domyślnym zachowaniem jest wydrukowanie bieżącej linii tuż przed przejściem do następnej linii (dlatego sed musi -npozwolić ci ją wyłączyć). Niektóre starsze sedy nie mają średnika (tak myślę), więc możliwe, że będziesz musiał to zrobićsed -e p -e p -e p
Awk działa z condition {action}parami. Jeśli akcja zostanie pominięta, domyślnie drukowany jest bieżący wiersz, jeśli warunek zwraca wartość true. Awk, podobnie jak wiele języków podobnych do C, traktuje 1jako prawdę. (Dla kompletności, jeśli warunek zostanie pominięty, akcja zostanie wykonana dla każdego rekordu).
Wiele funkcji perla wykorzystuje zmienną „domyślną”. Ten liniowiec jest równoważny (na 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„sfornie potrzebuje szelki, jeśli jest tylko jedno polecenie, aby powtórzyć. Iperljest prostsze, jeśli używaszforeachpętli:for$i(0..3){print}.