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:
pLệ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 -nphả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 1là đú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 $_;
}
awkSẽforkhô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ụngforeachvòng lặp :for$i(0..3){print}.