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, testlà 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ừ
< testvỏ 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
awkvì 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ệtNFvà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!