Genel olarak, bir araç ne kadar uzmanlaşırsa, o kadar hızlı olur. Yani çoğu durumda, bekleyebilirsiniz cut
ve grep
daha hızlı olması için sed
, ve sed
daha hızlı olması için awk
. Daha karmaşık araçların tek bir başlatılmasıyla daha uzun araçların daha basit boru hatlarını karşılaştırıyorsanız, kural yoktur. Bu sadece büyük girdilere (yani, milyonlarca satırlık) önem taşır; Kısa girişler için herhangi bir fark görmezsiniz.
Daha karmaşık araçların avantajı elbette daha fazla şey yapabilmeleridir.
Komutlarınız kediyi gereksiz yere kullanır. Bunun yerine yönlendirmeyi kullanın (özellikle hız konusunda endişeleniyorsanız, kıyaslama yapmadan önce muhtemelen hız konusunda endişelenmemelisiniz).
<fileName awk '/WORD/ { print $2 }'
<fileName grep WORD | cut -f 2 -d ' '
Bu komutlar neredeyse eşdeğerdir. Farklılıklar:
- awk ve grep farklı regexp sözdizimlerine sahiptir . Awk ve
grep -E
neredeyse aynı regexp sözdizimleri var (genişletilmiş düzenli ifadeler).
cut -d ' '
her bir bireysel boşluk karakterini sınırlayıcı olarak kabul eder. Awk'ın varsayılan sınırlayıcısı, birden çok boşluk, sekme vb. Olabilen herhangi bir boşluk dizisidir cut
. Ayırıcı olarak isteğe bağlı boşluk dizileri kullanamazsınız . (Örneğin, varsayılan “herhangi bir boşluk sekansı”, yani özel bir durum olan) tek bir boşluk meydana gelen bir regexp'nin dışında tek bir boşluk, eşleşen bir regexp'nin saha ayırıcı koymak awk aymalar, tek tek boşluk kullanmak için: awk -F '[ ]' '/WORD/ {print $2}'
.
Optimiz Program Optimizasyonunun İlk Kuralı: Yapmayın. İkinci Program Optimizasyon Kuralı (sadece uzmanlar için!): Henüz yapma. - Michael A. Jackson
echo filename
yacat filename
?