[0-9] yerine [AJ] yerine sed ile çalışmaz


11

0-9 arasındaki tüm rakamları sed'deki karşılık gelen harflerle değiştiren bir komut üzerinde çalışıyorum. Yanlış bir şey yaptığımı biliyorum, ama sed yedek regex'i bir dize değişmezinden başka bir şey olarak yorumlamıyor.

Kullandığım komut sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt

Bana oldukça basit geliyor, ama yaklaşık bir saattir takıldım. Aldığım çıktı 0-9 yerine "[AJ]"

Yanıtlar:


38

Bunun yerine, sadece maç (sol taraf) normal bir ifadedir. Yedek (bazı ters eğik çizgi genişlemesi ile birlikte) daha fazla veya daha az sadece bir dizgi alır - bu regex değil .

Öyle yerine, harf çevirisi değil, ikame istiyorum sile y:

echo 34031445 | sed 'y/0123456789/ABCDEFGHIJ/'

sed aralıkları kullanamaz y, ancak Perl şunları yapabilir:

echo 34031445 | perl -pe 'y/0-9/A-J/'

Veya sadece şunu kullanın tr:

echo 34031445 | tr 0-9 A-J

12
Kabul. triş için en kolay ve muhtemelen en hızlı araçtır.
sdkks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.