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:
p
Poleceniem 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 -n
pozwolić 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 1
jako 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
„sfor
nie potrzebuje szelki, jeśli jest tylko jedno polecenie, aby powtórzyć. Iperl
jest prostsze, jeśli używaszforeach
pętli:for$i(0..3){print}
.