Kể từ khi ruby
đi kèm với bất kỳ bản phân phối Linux nào tôi biết:
ruby -e 'STDIN.readlines.each { |l| l.split(" ").uniq.each { |e| print "#{e} " }; print "\n" }' < test
Ở đây, test
là tập tin có chứa các yếu tố.
Để giải thích lệnh này làm gì, mặc dù Ruby gần như có thể được đọc từ trái sang phải:
- Đọc đầu vào (xuất phát từ
< test
vỏ của bạn)
- Đi qua từng dòng của đầu vào
- Tách dòng dựa trên một không gian ngăn cách các mục, thành một mảng (
split(" ")
)
- Lấy các phần tử duy nhất từ mảng này (theo thứ tự)
- Đối với mỗi thành phần duy nhất, hãy in nó, bao gồm dấu cách (
print "#{e} "
)
- In một dòng mới một khi chúng ta đã hoàn thành với các yếu tố độc đáo
awk
vì nó phụ thuộc vào thứ tự kiểm tra và vận hành, toán tử ternary,split("",a)
quirk để đặt lại một mảng (và giá trị trả về của nó để đặt lạii
) và các biến đặc biệtNF
vàFS
. Một lời giải thích như vậy làm cho một câu trả lời thậm chí còn tốt hơn!