sedve awkbunların üst kümeleri, grepbiri ya da diğeri ile daha kolay olan şeyler var.
grep fooyazılabilir sed '/foo/!d'veya awk /foo/düşünün:
grep -i foosed '/[fF][oO][oO]/!d'GNU'lar gibi standart olmayan uzantıları göz önünde bulundurmak istemiyorsanız , olması gerekir sed '/foo/I!d'. Veya ile awk: awk 'tolower($0) ~ /foo/'ya yine GNU uzantısını kullanarak: awk -v IGNORECASE=1 /foo/.
Farklı araçların diğer araçlarla iyi ve hantal olduğu şeyler:
grep
grepbasit bir araçtır, ancak çoğaltılması daha zor olan çok özel çalışma modlarına sahiptir awkveya sed:
grep -i büyük / küçük harfe duyarlı olmayan eşleştirme için (yukarıya bakın)
grep -Fe "$string"sabit dize araması için ( export string; awk 'index($0, ENVIRON["string"])'ile awkdoğrudan eşdeğer yok sed).
grep -rözyinelemeli arama için (standart dışı)
- (standart dışı)
grep -P/ pcregrepperl benzeri regexps için (bazı seduygulamalarda perl benzeri regexp desteği vardır, ancak en önemlileri değil)
- (standart olmayan)
grep -oeşleşen kısmı döndürmek için (birkaç satır awkveya sedaynı işlemi yapmak için)
- (standart dışı)
grep -A/B/Cmaçın bağlamını döndürmek için ( sedveya ile benzer şekilde yapmak acı verici awk)
sed
s/foo/bar/: sed's skomutu aşağıdaki awkgibi uygulanması zor özelliklere sahiptir :
s/foo\(.*\)bar/\1/g: yakalama (GNU awk'ın bunun için bir gensub()uzantısı olsa da)
s/foo/bar/3: her satırdaki 3. tekrarlamayı değiştir
- (standart dışı): yerinde dosya düzenleme (
awkşimdi GNU tarafından da desteklenmesine rağmen ).
awk
awk üç zenginlikle en zengin olanıdır.
- sayılarla uğraşmak için iyi
- sütunlarla biçimlendirilmiş girdilerle uğraşmak için iyi.
- ilişkilendirilebilir dizilerle farklı kaynaklardan veri ayıklamak ve birleştirmek için iyidir.
perl
perlpratik bir çıkarma ve raporlama aracı olarak tüm bunlardan en iyisine sahiptir. Başlangıçta bunun için tasarlandı (tüm bunları yapan sed/ awkkullanılmayan araç olmak ).
perlMetin işleme konusunda uzmanlaşmak ciddi bir avantaj sağlar. sedÖrneğin daha az yaygın olan komutlara bakmadan önce biraz zaman geçirmenizi tavsiye ederim .
verim
Genel bir kural olarak, araç ne kadar uzmanlaşırsa, görevdeki en verimli olandır. Ancak bu aynı zamanda uygulamaya, göreve ve diğer birkaç faktöre ve performansa da bağlı olarak dikkate alınması gereken değiş tokuşlara sahip olabilir.
Örneğin , çok hızlı bazı uygulamalar grepveya seduygulamalar vardır, ancak örneğin çok baytlı karakterleri desteklemezler, bu nedenle yalnızca çok baytlık yerel ayarlarda ABD-İngilizce metninde doğru şekilde çalışabilirler. Veya hızlıdırlar çünkü küçük bir sabit uzunluklu tampon üzerinde çalışırlar ve böylece keyfi girdi üzerinde çalışamazlar ...