SORU
8 ŞUBAT 2009, Pazar


Bir Metin İçinde Bul ve Değiştir bir Bash Komut Dosyası

Belirli bir giriş için Bul ve değiştir bir dize, söyle ** 0, /tmp/file.txt dosya başka bir dize ile, say XYZ değiştirmek için en kolay yolu nedir?

Bir uygulama yazma ve IronPython SSH-ile komutları çalıştırmak için kullanıyorum; ama Unix o kadar iyi tanımıyorum ve Ne aramak için bilmiyorum.

Bash, komut satırında olmasının dışında, çok güçlü bir betik dili olabileceğini duydum. Eğer bu doğruysa, bu gibi eylemleri gerçekleştirebilirsiniz sanırım.

Bash ile bunu yapabilir miyim, ve benim hedefe ulaşmak için (bir satır) en basit komut nedir?

CEVAP
8 ŞUBAT 2009, Pazar


En kolay yolu sed (veya perl) kullanmak için:

sed -i -e 's/abc/XYZ/g' /tmp/file.txt

Sed yerinde bir düzenleme -i seçeneği nedeniyle bunu çağırmak olacak. Bu bash çağrılabilir.

Eğer gerçekten sadece bash kullanmak istiyorsanız, o zaman aşağıdaki geçici:

while read a ; do echo ${a//abc/XYZ} ; done < /tmp/file.txt > /tmp/file.txt.t ; mv /tmp/file.txt{.t,}

Bu, her satır üzerinde bir değişiklik yapmadan, geçici bir dosya için (giriş hırpalamak istemiyorum) yazma döngüsü. Sonunda taşınmak özgün adı geçici taşır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • multimediaGEEKS LLC

    multimediaGE

    3 Mayıs 2010
  • TecnoTutosPC

    TecnoTutosPC

    19 Kasım 2012
  • The White House

    The White Ho

    21 Ocak 2006