linux

2016-03-29 28 views
-1

tr'de bir komut borusu yazmanın daha iyi bir yolunu arıyordum. Bu komutun benim yaptığımdan daha verimli bir şekilde yapılıp yapılmayacağını merak ediyorum. Varsa lütfen bana bildirin!linux

cat logfile | tr '[' '(' | tr '{' '(' | tr ']' ')' | tr '}' ')' 

cevap

1

tr karakter (veya düzenli ifadeler) değiştirerek çalışır ancak çağırma

sed başına sadece bir işlem kolları İstediğinizi elde etmek daha uygun olabilir. Bu

sed -e 's/\[/(/g' -e 's/{/(/g' -e 's/\]/)/g' -e 's/}/)/g' catfile 

hatta sed -i anahtarı ile giriş dosyasını düzenleyebilirsiniz denemek çağrı başına birden fazla işlemi işleyebilir

Not
sed -i -e 's/\[/(/g' -e 's/{/(/g' -e 's/\]/)/g' -e 's/}/)/g' catfile 

:

[ başladığını belirten düzenli bir ifade, bu yüzden bir ters eğik çizgi tarafından sed arama yapmak ve dize literaldeğiştirmek için kaçmak zorunda

+0

içine tüm çevirilerini birleştirebilirsiniz 'tr' ... daha – karakfa

+0

yapabilirsiniz Ve sed'' tek 'y' komuta içine hepsini birleştirebilirsiniz. – Barmar

+0

Karakfa, 'tr' için rtfm için zaman, teşekkürler! @Barmar, teşekkürler! –