Tôi tự hỏi nếu điều này đang biến thành một trận đấu golf :
sed 'p;p;p'
awk '1;1;1;1'
perl -lpE 'say;say;say' # if Paul McCartney and Michael Jackson were hackers...
Giải trình:
p
Lệnh của sed là in dòng hiện tại. Hành vi mặc định là in dòng hiện tại ngay trước khi chuyển sang dòng tiếp theo (đó là lý do tại sao sed -n
phải cho phép bạn tắt nó). Một số seds cũ không có dấu chấm phẩy (tôi nghĩ) vì vậy có thể bạn phải làmsed -e p -e p -e p
Awk làm việc với condition {action}
các cặp. Nếu hành động bị bỏ qua, mặc định là in dòng hiện tại nếu điều kiện trả về đúng. Awk, giống như nhiều ngôn ngữ giống như C, coi 1
là đúng. (Để đầy đủ, nếu điều kiện bị bỏ qua, hành động sẽ được thực hiện cho mỗi bản ghi.)
Nhiều hàm perl tận dụng biến "mặc định". Lớp lót này tương đương với (trên 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
Sẽfor
không cần niềng răng nếu chỉ có một lệnh lặp lại. Vàperl
đơn giản hơn nếu bạn sử dụngforeach
vòng lặp :for$i(0..3){print}
.